上一篇文章我们通过kubeadm 部署了一个k8s 集群,下面开始小试牛刀,创建我们的第一个 hello world 应用部署。
下面是一个Deployment的模板。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
先不管三七二十一,我们先创建,然后再慢慢解释这些参数的意义。
$ kubectl create -f nginx.yaml
deployment.apps/nginx-deployment created
可以看到deployment 已经成功创建。查看deployment
$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 1/2 2 0 42s
查看deployment 下面的Pod的状态,可以看到一个Pod已经Ready了,而另一个Pod正在启动中。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-5bf87f5f59-57894 1/1 Running 0 54s
nginx-deployment-5bf87f5f59-xbbj9 0/1 ContainerCreating 0 54s
等待一段时间后,两个Pod 的状态都将变成Running 状态。下面我们再详细分解一下上面Deployment里面参数。
首先是 spec.selector.matchLabels 和 spec.template.metadata.labels 这个组合,其中 matchLabels 定义了这个deployment 筛选Pod的逻辑,凡是符合和 matchLabels 标签的都属于这个deployment 管理,labels 定义这个Pod的标签,通过这个模板创建的Pod 都会自动打上这个标签。关于label 筛选的内容之后单独通过文章介绍。
第二个重要的参数是 spec.replicas 它定义了这个deployment的副本数,就是这个deployment下面有几个Pod。
第三个参数是 spec.template.spec.containers 定义了一个Pod里面的容器列表。至于k8s为啥设计一个Pod 里面多个容器,下一篇文章介绍。 每个container 里面又包含了容器的镜像、环境变量、以及端口等,也就是我们在docker run 后面的那些参数。
页面更新:2024-04-21
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号