1. 认识Deployment
在 k8s 中,Pod 是最小的控制单元,但是 k8s 很少直接控制 Pod,一般都是通过 Pod 控制器来完成的。Pod 控制器用于 pod 的管理,确保 pod 资源符合预期的状态,当 pod 的资源出现故障时,会尝试进行重启或重建 pod。我这里只学习一种 pod 控制器:Deployment。
2. 常用命令
# 命令格式: kubectl create deployment 名称 [参数]
# --image 指定pod的镜像
# --port 指定端口
# --replicas 指定创建pod数量
# --namespace 指定namespace
[root@k8s-master01 kubeadm_yaml]# kubectl create deploy nginx --image=nginx:latest --port=80 --replicas=3 -n dev
deployment.apps/nginx created
# 查看创建的pod
[root@k8s-master01 kubeadm_yaml]# kubectl get pods -n dev
NAME READY STATUS RESTARTS AGE
nginx-8d545c96d-62qzz 1/1 Running 0 61s
nginx-8d545c96d-nv9mh 1/1 Running 0 61s
nginx-8d545c96d-qkr4s 1/1 Running 0 61s
# 查看deployment的信息
[root@k8s-master01 kubeadm_yaml]# kubectl get deploy -n dev
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 3/3 3 3 102s
# 查看deployment的详细信息
kubectl describe deploy nginx -n dev
# UP-TO-DATE:成功升级的副本数量
# AVAILABLE:可用副本的数量
[root@k8s-master01 kubeadm_yaml]# kubectl get deploy -n dev -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 3/3 3 3 2m5s nginx nginx:latest app=nginx
# 删除deployment
[root@k8s-master01 kubeadm_yaml]# kubectl delete deploy nginx -n dev
deployment.apps "nginx" deleted
配置操作
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