持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
简介
在k8s中,Pod是最小的控制单元,但是kubernetes基本不会直接控制Pod,而一般都是通过Pod控制器来完成的。Pod控制器用于对pod的管理,以保证pod资源是符合预期的状态的,而当pod的资源出现故障时,Pod控制器则会尝试对Pod进行重启或重建pod。
而在kubernetes中Pod控制器的种类有很多,今天我们来了解其中的一种:Deployment。 通过下图我们可以清晰地理解Deployment与Pod的关系是一对多,一个Deployment可以对多个Pod进行管理
命令介绍
那我们知道了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来进行部署的,所以我们还是要对它有一定的认知和使用能力。