1. 认识Deployment

在 k8s 中,Pod 是最小的控制单元,但是 k8s 很少直接控制 Pod,一般都是通过 Pod 控制器来完成的。Pod 控制器用于 pod 的管理,确保 pod 资源符合预期的状态,当 pod 的资源出现故障时,会尝试进行重启或重建 pod。我这里只学习一种 pod 控制器:Deployment。image-20200408193950807.png

2. 常用命令

  1. # 命令格式: kubectl create deployment 名称 [参数]
  2. # --image 指定pod的镜像
  3. # --port 指定端口
  4. # --replicas 指定创建pod数量
  5. # --namespace 指定namespace
  6. [root@k8s-master01 kubeadm_yaml]# kubectl create deploy nginx --image=nginx:latest --port=80 --replicas=3 -n dev
  7. deployment.apps/nginx created
  8. # 查看创建的pod
  9. [root@k8s-master01 kubeadm_yaml]# kubectl get pods -n dev
  10. NAME READY STATUS RESTARTS AGE
  11. nginx-8d545c96d-62qzz 1/1 Running 0 61s
  12. nginx-8d545c96d-nv9mh 1/1 Running 0 61s
  13. nginx-8d545c96d-qkr4s 1/1 Running 0 61s
  14. # 查看deployment的信息
  15. [root@k8s-master01 kubeadm_yaml]# kubectl get deploy -n dev
  16. NAME READY UP-TO-DATE AVAILABLE AGE
  17. nginx 3/3 3 3 102s
  18. # 查看deployment的详细信息
  19. kubectl describe deploy nginx -n dev
  20. # UP-TO-DATE:成功升级的副本数量
  21. # AVAILABLE:可用副本的数量
  22. [root@k8s-master01 kubeadm_yaml]# kubectl get deploy -n dev -o wide
  23. NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
  24. nginx 3/3 3 3 2m5s nginx nginx:latest app=nginx
  25. # 删除deployment
  26. [root@k8s-master01 kubeadm_yaml]# kubectl delete deploy nginx -n dev
  27. deployment.apps "nginx" deleted

配置操作

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: nginx
  5. namespace: dev
  6. spec:
  7. replicas: 3
  8. selector:
  9. matchLabels:
  10. run: nginx
  11. template:
  12. metadata:
  13. labels:
  14. run: nginx
  15. spec:
  16. containers:
  17. - image: nginx:latest
  18. name: nginx
  19. ports:
  20. - containerPort: 80
  21. protocol: TCP