deployment¶
run 创建的是deployment, deployment简写可以写deploy。
deployment是pod的控制器,用来管理容器的。
查看kubectl run的帮助¶
kubectl run --help
创建一个指定多个参数的deployment¶
这里run后面的nginx-deploy是本次创建的deploy的名称。
–image=指定的是镜像名和版本,
nginx是镜像名,冒号:后面的是镜像版本。
–port是指定容器的打开端口。
–replicas=2 代表启动并保持2个pod。
下面的kubectl get 的状态里, Running表示pod已经在运行了。 ContainerCreating表示pod正在创建,一般是pod所分配到的node上还没有下载好镜像,正在下载镜像,等待一会在get查看就好了。
[root@k8s1 ~]# kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=2
deployment.apps/nginx-deploy created
[root@k8s1 ~]#
[root@k8s1 ~]# kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx-deploy 2 2 2 1 6s
[root@k8s1 ~]#
[root@k8s1 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deploy-5b595999-cqwkd 0/1 ContainerCreating 0 9s
nginx-deploy-5b595999-f4m8x 1/1 Running 0 9s
[root@k8s1 ~]#
[root@k8s1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-deploy-5b595999-cqwkd 0/1 ContainerCreating 0 20s <none> k8s2.shenmin.com <none>
nginx-deploy-5b595999-f4m8x 1/1 Running 0 20s 10.244.2.10 k8s3.shenmin.com <none>
root@k8s1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-deploy-5b595999-cqwkd 1/1 Running 0 3m 10.244.1.9 k8s2.shenmin.com <none>
nginx-deploy-5b595999-f4m8x 1/1 Running 0 3m 10.244.2.10 k8s3.shenmin.com <none>
删除一个pod,验证其保持pod数量的功能¶
这里可以看到有两个pod,我们删除其中一个,然后再get查看,发现原有的那个pod已经被删除了,通过pod名称可以判断。然后又重新启动了一个pod。
[root@k8s1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-deploy-5b595999-cqwkd 1/1 Running 0 3m 10.244.1.9 k8s2.shenmin.com <none>
nginx-deploy-5b595999-f4m8x 1/1 Running 0 3m 10.244.2.10 k8s3.shenmin.com <none>
[root@k8s1 ~]#
[root@k8s1 ~]# kubectl delete pod nginx-deploy-5b595999-cqwkd
pod "nginx-deploy-5b595999-cqwkd" deleted
[root@k8s1 ~]#
[root@k8s1 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-deploy-5b595999-94z9p 1/1 Running 0 14s 10.244.1.10 k8s2.shenmin.com <none>
nginx-deploy-5b595999-f4m8x 1/1 Running 0 5m 10.244.2.10 k8s3.shenmin.com <none>
通过yaml文件创建一个deployment¶
[alvin@k8s1 ~]$ vim registry.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: registry
spec:
replicas: 1
template:
metadata:
labels:
run: registry
spec:
containers:
- name: registry
resources:
limits:
cpu: 2
memory: 200Mi
requests:
cpu: 0.5
memory: 100Mi
image: registry:2
ports:
- containerPort: 5000
protocol: TCP
name: registry-port
volumeMounts:
- name: registry-nfs-data
mountPath: /var/lib/registry
readOnly: false
- name: registry-nfs-config
mountPath: /etc/docker/registry
readOnly: true
volumes:
- name: registry-nfs-data
nfs:
server: 192.168.127.54
path: '/registry/data'
- name: registry-nfs-config
nfs:
server: 192.168.127.54
path: '/registry/config'
$ kubectl create -f registry.yaml