当前位置:网站首页>kubernetes资源对象介绍及常用命令(二)
kubernetes资源对象介绍及常用命令(二)
2022-07-01 02:31:00 【江小南】
Deployment
Deployment顾名思义,就是部署的意思。Deploymen用于控制Pod,使Pod拥有多副本,自愈,扩缩容等能力。
多副本
副本,可以理解为Pod的数量。这些Pod会被随机分配到集群中的任意节点。
创建一次名叫my-app的部署,使用镜像为nginx。副本数为3。
命令行方式
kubectl create deploy my-app --image=nginx --replicas=3
yaml方式,my-app.yml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- image: nginx
name: nginx
kubectl apply -f my-app.yml

扩缩容
扩缩容是将原有的副本数进行扩大或缩小。流量大的时候可以扩容,流量高峰过后可以进行缩容,资源利用最大化。
命令行方式
kubectl scale --replicas=5 deployment/my-app
副本数由3个变成5个。
修改yaml方式
kubectl edit deployment my-app
将replicas修改成自己想要的数量,保存退出即可进行扩缩容。

自愈&故障转移
使用Deployment部署的应用始终和设定的副本数保持一致,当pod出现异常或者服务器宕机,亦或者删除pod,会在正常的节点重新拉起副本,以满足我们设定的副本数量。
我们模拟将k8s-worker1节点宕机。
发现k8s-worker1节点的两个pod状态为Terminating。在k8s-worker2多了两个Running状态的pod。实现了故障转移。
扩展:
查看集群内pod信息。
kubectl get pod -owide
监控集群内pod情况,打印详细信息。
kubectl get pod -w

阈值:pod出现了异常状况,k8s并不会立即杀死pod进行重启,而是超过了阈值才进行相应的重启操作,以防止因短暂网络问题等故障导致的频繁启动pod。
滚动更新
传统的更新升级需要将服务停止在做升级操作。k8s不用停止服务,会将pod依次替换成最新的,即启动一个新pod,杀死一个旧pod,直至全部更新完为止。
将nginx镜像更新为1.16.1版本。
命令行方式
kubectl set image deployment/my-app nginx=nginx:1.16.1 --record
修改yaml方式
kubectl edit deployment/my-app
将images修改为1.16.1中,保存退出即可。

扩展:
查看某次部署的yaml。
kubectl get deployment [my-app] -oyaml
版本回退
将版本回退到历史的某一次。
查看历史记录
[[email protected] ~]# kubectl rollout history deployment/my-app
deployment.apps/my-app
REVISION CHANGE-CAUSE
1 <none>
2 kubectl set image deployment/my-app nginx=nginx:1.16.1 --record=true
[[email protected] ~]#
查看某个历史详情
[[email protected] ~]# kubectl rollout history deployment/my-app --revision=2
deployment.apps/my-app with revision #2
Pod Template:
Labels: app=my-app
pod-template-hash=5ff664f457
Annotations: kubernetes.io/change-cause: kubectl set image deployment/my-app nginx=nginx:1.16.1 --record=true
Containers:
nginx:
Image: nginx:1.16.1
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
[[email protected] ~]#
回滚(回到上次)
[[email protected] ~]# kubectl rollout undo deployment/my-app
deployment.apps/my-app rolled back
[[email protected] ~]#
回滚(回到指定版本)
[[email protected] ~]# kubectl rollout undo deployment/my-app --to-revision=2
deployment.apps/my-app rolled back
[[email protected] ~]#
回滚的版本需要按照自己需要的填写。
小结:

除了Deployment,k8s还有 StatefulSet 、DaemonSet 、Job 等 类型资源。我们都称为 工作负载。 有状态应用使用 StatefulSet 部署,无状态应用使用 Deployment 部署 https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/
边栏推荐
- CentOS installs multiple versions of PHP and switches
- Proxy support and SNI routing of pulsar
- 7_OpenResty安装
- Alphabet-Rearrange-Inator 3000(字典树自定义排序)
- ANR问题的分析与解决思路
- Visual effects, picture to cartoon function
- Go import self built package
- 使用ipmitool配置X86服务器的BMC网络和用户信息
- Restcloud ETL实践之数据行列转换
- Pytorch —— 基础指北_贰 高中生都能看懂的[反向传播和梯度下降]
猜你喜欢
QML control type: tooltip
What is PMP?
Small program cloud development -- wechat official account article collection
零基础自学SQL课程 | 窗口函数
How to add a condition for an associated table in an SQL statement [null value required or not required]
RocketQA:通过跨批次负采样(cross-batch negatives)、去噪的强负例采样(denoised hard negative sampling)与数据增强(data augment
Restcloud ETl数据通过时间戳实现增量数据同步
Leetcode interview question 17.10 Main elements
nacos配置中心使用教程
Gartner研究:在中国,混合云的采用已成为主流趋势
随机推荐
查看 jvm 参数
记一次服务部署失败问题排查
centos 安装多个版本的php并切换
I want to know how to open a stock account? Is it safe to open an account online?
UE4渲染管线学习笔记
开源基础软件公司,寻找一起创造未来的你(API7.ai)
现在开户有优惠吗?另外,手机开户安全么?
How to add a condition for an associated table in an SQL statement [null value required or not required]
SWT/ANR问题--Binder Stuck
Find the length of the common part of two line segments
Thread Detach
Image preloading in JS
How to learn and read code
(translation) use eyebrow shaped text to improve Title click through rate
Thread Detach
Restcloud ETL实践之数据行列转换
7_OpenResty安装
Fix names in the table (first character uppercase, other lowercase)
(translation) reasons why real-time inline verification is easier for users to make mistakes
详解数据治理知识体系