一 介绍

        在k8s中,Pod是最小的控制单元,但是k8s很少直接控制Pod,一般都是通过Pod控制器来完成的。Pod控制器勇于pod的管理,确保pod资源符合预期的状态,当pod资源出现故障时,会尝试进行重启或重建pod。

        在k8s中Pod的控制器很多,此处只介绍一种:Deployment。

 二 操作

1 命令

因版本原因,可能有些命令参数不能使用,这个理解就好

# 命令格式:kubectl create deployment 名称 [参数]
# --image 指定pod的镜像
# --port  指定pod的端口
# --replicas:指定创建pod的数量
# --namespace 指定namespace
[root@master ~]#kubectl create deploy nginx --image=nginx:latest --port=80 --replicas=3 -n dev
deployment.apps/nginx created


# 查看创建的pod
[root@master ~]#kubectl get pods -n dev
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信息
[root@master ~]#kubectl get deploy -n dev
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   3/3     3            3           2m42s

# UP-TO-DATE:成功升级的副本数量
# AVAILABLE:可用副本的数量
[root@master ~]#kubectl get deploy -n dev -o wide
NAME    READY UP-TO-DATE  AVAILABLE   AGE     CONTAINERS   IMAGES              SELECTOR
nginx   3/3     3         3           2m51s   nginx        nginx:latest        run=nginx

# 查看deployment详细信息
[root@master ~]#kubectl get deploy nginx -n dev -o wide
Name:                   nginx
Namespace:              dev
CreationTimestamp:      Wed, 08 May 2021 11:14:14 +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-5ff7956ff6 (3/3 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  5m43s  deployment-controller  Scaled up replicaset nginx-5ff7956ff6 to 3


# 删除
[root@master ~]#kubectl delete deploy nginx -n dev
deployment.apps "nginx" deleted

 2 配置

创建一个deploy-nginx.yaml,内容如下:

apiVersion: apps/v1
kind: deployment
metadata:
    name: nginx
    namespace: dev
dev:
    replicas: 3
    selector: 
    matchlabels:
        run: nginx
   template:
       metadata:
           labels:
               run: nginx
   spec:
       containers:
         - image: nginx:latest
           name: nginx
           ports:
             - containerPort: 80
               protocol: TCP

然后就可以执行对应的创建和删除命令了:

# 创建
kubectl create -f deploy-nginx.yaml
# 删除
kubectl delete -f deploy-nginx.yaml

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐