[toc]

一、概述

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

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

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

image.png

二、语法及应用示例

运行一个实例

kubectl run nginx -n dev --image=nginx:1.17.1 --replicas=3

image.png

特别注意:在v1.18版之后,kubectl run nginx --image=nginx --replicas=2 --port=80,会反馈Flag --replicas has been deprecated, has no effect and will be removed in the future,并且只会创建一个Nginx容器实例。

1. 创建控制器

语法:创建指定名称的deployement

kubectl create deployment xxx [-n 命名空间]
kubectl create deploy xxx [-n 命名空间]

示例:在名称为test的命名空间下创建名为nginx的deployment

kubectl create deploy nginx -n dev --image=nginx:1.17.1

2. 指定控制器创建pod规模

语法:根据指定的deplyment创建Pod

kubectl scale deployment xxx [--replicas=正整数] [-n 命名空间]

示例:在名称为test的命名空间下根据名为nginx的deployment创建4个Pod

kubectl scale deploy nginx -n dev --replicas=4

image.png

3. 命令式创建

语法:命令式对象配置

  1. 创建一个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:1.17.1
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
  1. 执行创建和删除命令:
kubectl create -f deploy-nginx.yaml
kubectl delete -f deploy-nginx.yaml

image.png

4. 查看pod

语法:查看创建的Pod

kubectl get pods [-n 命名空间]

示例:查看名称为dev的namespace下通过deployment创建的3个Pod

kubectl get pods -n dev

image.png

5. 查看控制器信息

语法:查看deployment的信息

kubectl get deployment [-n 命名空间]
kubectl get deploy [-n 命名空间]

示例:查看名称为dev的namespace下的deployment

kubectl get deployment -n dev

image.png

6. 查看控制器描述

语法:查看deployment的详细信息

kubectl describe deployment xxx [-n 命名空间]
kubectl describe deploy xxx [-n 命名空间]

示例:查看名为dev的namespace下的名为nginx的deployment的详细信息

kubectl describe deployment nginx -n dev

image.png

8. 删除控制器

语法:删除deployment

kubectl delete deployment xxx [-n 命名空间]
kubectl delete deploy xxx [-n 命名空间]

示例:删除名为dev的namespace下的名为nginx的deployment

kubectl delete deployment nginx -n dev

image.png

Q.E.D.


只有创造,才是真正的享受,只有拚搏,才是充实的生活。