k8s入门知识之Deployment

188 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

简介

在k8s中,Pod是最小的控制单元,但是kubernetes基本不会直接控制Pod,而一般都是通过Pod控制器来完成的。Pod控制器用于对pod的管理,以保证pod资源是符合预期的状态的,而当pod的资源出现故障时,Pod控制器则会尝试对Pod进行重启或重建pod。

而在kubernetes中Pod控制器的种类有很多,今天我们来了解其中的一种:Deployment。 通过下图我们可以清晰地理解Deployment与Pod的关系是一对多,一个Deployment可以对多个Pod进行管理

image-20200408193950807.png

命令介绍

那我们知道了Deployment的概念和作用,下面我们来了解学习下关于Deployment有哪些命令呢?

1、创建Deployment

# 命令格式: kubectl create deployment 名称  [参数] 
# --image  指定pod的镜像
# --port   指定端口
# --replicas  指定创建pod数量
# --namespace  指定namespace
# 1.创建
[root@master temp]# kubectl create deployment -n dev nginx --image=nginx:latest --port=80 --replicas=3
deployment.apps/nginx created
# 2.查看
[root@master temp]# kubectl get pods -n dev 
NAME                    READY   STATUS    RESTARTS   AGE
nginx-8d545c96d-2zlkl   1/1     Running   0          20s
nginx-8d545c96d-9gprb   1/1     Running   0          20s
nginx-8d545c96d-h5lss   1/1     Running   0          20s

2、查看Deployment的基本信息

[root@master temp]# kubectl get deploy -n dev -o wide
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
nginx   3/3     3            3           17m   nginx        nginx:latest   app=nginx

3、查看Deployment的详细信息

[root@master temp]# kubectl describe deploy -n dev nginx 
Name:                   nginx
Namespace:              dev
CreationTimestamp:      Fri, 15 Apr 2022 11:43:20 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=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:  app=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-8d545c96d (3/3 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  19m   deployment-controller  Scaled up replica set nginx-8d545c96d to 3

4、删除Deployment

[root@master ~]# kubectl delete deploy -n dev nginx deployment.apps "nginx" deleted [root@master ~]# kubectl get deploy -n dev No resources found in dev namespace.

5、配置方式 a.准备配置文件:deploy-nginx.yaml

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

b.启动配置文件

[root@master temp]# kubectl apply -f deploy-nginx.yaml deployment.apps/nginx created

总结

Deployment内容相对简单,但是正式环境中一般都是使用Deployment来进行部署的,所以我们还是要对它有一定的认知和使用能力。