k8s1.17-deployment介绍(pod控制器)、创建、查看、删除命令

介绍

在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是 通过Pod控制器来完成的。

Pod控制器用于pod的管理,确保pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建pod。

在kubernetes中Pod控制器的种类有很多,本章节只介绍一种:Deployment。

创建

命令格式:

kubectl run pod控制器名称  --image=pod的镜像 --port=端口 --replicas=创建pod数量 --n 指定namespace

参数解释:

  • --image:指定pod的镜像
  • --port:指定端口
  • --replicas:指定创建pod数量
  • --n:指定namespace,也可以是 --ns 或 --namespace

例子

之前文章中,test 命名空间下已经有了很多pod,为了防止发生冲突,先创建 test2 命名空间

kubectl create ns test2
kubectl run nginx --image=nginx:latest --port=80 --replicas=3 -n test2

显示如下表示成功:

deployment.apps/nginx created

查看Pod

kubectl get pods -n test2

显示如下:

NAME                     READY   STATUS    RESTARTS   AGE
nginx-5ff7956ff6-6k8cb   1/1     Running   0          19s
nginx-5ff7956ff6-jxfjt   1/1     Running   0          19s
nginx-5ff7956ff6-v6jqw   1/1     Running   0          19s

查看deployment的信息

kubectl get deploy -n test2

显示如下:

NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   3/3     3            3           2m42s

显示扩展信息

kubectl get deploy -n test2 -o wide

显示如下:

NAME    READY UP-TO-DATE  AVAILABLE   AGE     CONTAINERS   IMAGES              SELECTOR
nginx   3/3     3         3           2m51s   nginx        nginx:latest        run=nginx

解释:

  • UP-TO-DATE:成功升级的副本数量
  • AVAILABLE:可用副本的数量

查看详细信息

kubectl describe deploy nginx -n test2

显示如下:

Name:                   nginx # 控制器名字
Namespace:              test2 # 控制器所在命名空间
CreationTimestamp:      Sun, 01 Oct 2023 10:29:22 +0800
Labels:                 run=nginx # 控制器标签
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               run=nginx
Replicas:               3 desired | 3 updated | 3 total | 3 available | 0 unavailable # 副本
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  run=nginx
  Containers:
   nginx:
    Image:        nginx:latest
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-dd6b5d745 (3/3 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  33m   deployment-controller  Scaled up replica set nginx-dd6b5d745 to 3

删除

注意:删除控制器后,对应的pod也会删除

kubectl delete deploy nginx -n test2

执行结果如下,表示删除成功:

deployment.apps "nginx" deleted

查看 test2 命名空间下的pod:

kubectl get pod -n test2

yaml 配置文件

创建 deploy-nginx.yaml 文件:

vim deploy-nginx.yaml

按 i 键

复制粘贴下面内容:

apiVersion: apps/v1
kind: Deployment # 表示是 pod控制器 的配置
metadata:
  name: nginx # pod控制器名称
  namespace: test2 # 所在空间
spec:
  replicas: 3 # 副本数量
  selector: # 指定 标签选择器
    matchLabels: # 匹配标签
      run: nginx # 该控制器 控制 下面 标签是 run: nginx 的pod
  template: # pod 模板,是对pod的配置
    metadata:
      labels:
        run: nginx # pod标签
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP

按 esc,:wq 保存退出

创建

kubectl create -f deploy-nginx.yaml

查看

kubectl get deploy -n test2

显示如下:

NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/3     3            3           36s

提示: READY 显示 2/3,需要过会才能全部启动成功

删除

提示:可直接删除 pod和控制器

kubectl delete -f deploy-nginx.yaml

原文出处:/show_1IX6KkhIb9KP.html