kubernetes-deployment
deployment管理pod的生命周期,保证pod的高可用(支持无状态应用。)手动伸缩,自动伸缩。回滚。等,扩展pod。 创建多个一样的副本。监管pod状态。期望pod数和运行pod数量不一致,将产生新的pod。维持pod资源平衡。业务连续性和资源高可用,版本控制。想象一下升级就是升级镜像,就是更改底层 的镜像而已。
[root@master01 ~]# kubectl create deployment my-dep --image=nginx --replicas=2 --dry-run=client -o yaml >deploy.yaml
[root@master01 ~]# vim deploy.yaml
[root@master01 ~]# cat deploy.yaml
apiVersion: apps/v1 #api接口
kind: Deployment # 资源类型
metadata: #元数据
creationTimestamp: null
labels:
app: my-dep #标签
name: my-dep #deployment名字
spec:
replicas: 2 #副本数量
selector: #筛选器
matchLabels:
app: my-dep #这里的筛选器标签
strategy: {}
template: #创建pod的模板 下面就是pod的配置了
metadata:
creationTimestamp: null
labels:
app: my-dep #同这里关联
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
[root@master01 ~]# kubectl create -f deploy.yaml
[root@master01 ~]# kubectl get deployments.apps -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
my-dep 2/2 2 2 27s nginx nginx app=my-dep
[root@master01 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
multipod 2/2 Running 0 69m 10.244.140.96 node02 <none> <none>
my-dep-84885b44-6w2cn 1/1 Running 0 42s 10.244.196.159 node01 <none> <none>
my-dep-84885b44-97vrh 1/1 Running 0 42s 10.244.140.97 node02 <none> <none>
验证保持副本数,删除一个pod ,会自动新建一个副本保证副本数量为2
[root@master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
multipod 2/2 Running 0 98m
my-dep-84885b44-6w2cn 1/1 Running 0 30m
my-dep-84885b44-97vrh 1/1 Running 0 30m
[root@master01 ~]# kubectl delete pod my-dep-84885b44-6w2cn
pod "my-dep-84885b44-6w2cn" deleted
[root@master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
multipod 2/2 Running 0 98m
my-dep-84885b44-97vrh 1/1 Running 0 30m
my-dep-84885b44-tqkd8 0/1 ContainerCreating 0 3s
手动伸缩pod数量:
命令) 扩展至4个
[root@master01 ~]# kubectl scale --replicas=4 deployment my-dep
deployment.apps/my-dep scaled
[root@master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
multipod 2/2 Running 0 100m
my-dep-84885b44-97vrh 1/1 Running 0 32m
my-dep-84885b44-9kr49 0/1 ContainerCreating 0 4s
my-dep-84885b44-d264f 0/1 ContainerCreating 0 4s
my-dep-84885b44-tqkd8 1/1 Running 0 115s
[root@master01 ~]# kubectl get pods
配置文件)缩小到一个
[root@master01 ~]# vim deploy.yaml
[root@master01 ~]# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: my-dep
name: my-dep
spec:
replicas: 1
selector:
matchLabels:
app: my-dep
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: my-dep
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
[root@master01 ~]# kubectl apply -f deploy.yaml
Warning: resource deployments/my-dep is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
deployment.apps/my-dep configured
[root@master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
multipod 2/2 Running 0 102m
my-dep-84885b44-97vrh 1/1 Running 0 33m
升级回滚:理解一下升级到底是干了啥???简单点说就是更新了镜像。想象一下你公司的业务上线。。打包成image,放到内部仓库,k8s只需要更新下镜像就可以实现业务升级,CD概念。
升级,当前镜像为nginx:latest,更新为1.16.1
**–record ** 不然不会显示你的版本操作。 kubectl rollout history 会显示(none)
查看)
[root@master01 ~]# kubectl describe deployments.apps my-dep
Name: my-dep
Namespace: default
CreationTimestamp: Wed, 15 Feb 2023 16:36:41 +0800
Labels: app=my-dep
Annotations: deployment.kubernetes.io/revision: 3
Selector: app=my-dep
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=my-dep
Containers:
nginx:
Image: nginx #默认latest
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: my-dep-84885b44 (1/1 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 17h deployment-controller Scaled up replica set my-dep-84885b44 to 4
Normal ScalingReplicaSet 17h deployment-controller Scaled down replica set my-dep-84885b44 to 1
Normal ScalingReplicaSet 21m deployment-controller Scaled up replica set my-dep-6656c6df89 to 1
Normal ScalingReplicaSet 20m deployment-controller Scaled down replica set my-dep-84885b44 to 0
Normal ScalingReplicaSet 10m deployment-controller Scaled up replica set my-dep-84885b44 to 1
Normal ScalingReplicaSet 10m deployment-controller Scaled down replica set my-dep-6656c6df89 to 0
[root@master01 ~]#
更新)
[root@master01 ~]# kubectl set image deployment/my-dep nginx=1.16.1 --record
deployment.apps/my-dep image updated
[root@master01 ~]# kubectl get deployments.apps my-dep
NAME READY UP-TO-DATE AVAILABLE AGE
my-dep 1/1 1 1 17h
[root@master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
multipod 2/2 Running 0 18h
my-dep-76f4b4b6f9-bvrnl 0/1 ContainerCreating 0 18s
my-dep-84885b44-ft8lk 1/1 Running 0 12m
[root@master01 ~]# kubectl describe deployments.apps my-dep
Name: my-dep
Namespace: default
CreationTimestamp: Wed, 15 Feb 2023 16:36:41 +0800
Labels: app=my-dep
Annotations: deployment.kubernetes.io/revision: 4
Selector: app=my-dep
Replicas: 1 desired | 1 updated | 2 total | 1 available | 1 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=my-dep
Containers:
nginx:
Image: 1.16.1 #镜像改变
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True ReplicaSetUpdated
OldReplicaSets: my-dep-84885b44 (1/1 replicas created)
NewReplicaSet: my-dep-76f4b4b6f9 (1/1 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 17h deployment-controller Scaled up replica set my-dep-84885b44 to 4
Normal ScalingReplicaSet 17h deployment-controller Scaled down replica set my-dep-84885b44 to 1
Normal ScalingReplicaSet 23m deployment-controller Scaled up replica set my-dep-6656c6df89 to 1
Normal ScalingReplicaSet 22m deployment-controller Scaled down replica set my-dep-84885b44 to 0
Normal ScalingReplicaSet 12m deployment-controller Scaled up replica set my-dep-84885b44 to 1
Normal ScalingReplicaSet 12m deployment-controller Scaled down replica set my-dep-6656c6df89 to 0
Normal ScalingReplicaSet 34s deployment-controller Scaled up replica set my-dep-76f4b4b6f9 to 1
可以直接更改配置文件)
kubectl edit deployment/nginx-deployment,
回滚:
查看回滚的版本
[root@master01 ~]# kubectl rollout history deployment my-dep
版本数量。
[root@master01 ~]# kubectl rollout undo deployment my-dep --to-revision=8
deployment.apps/my-dep rolled back
回滚至第8个版本
本文链接:
/archives/deployment
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Emporer-Linux!
喜欢就支持一下吧