持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情
k8s中的deployment
前文
本文内容为对于k8s中的deployment相关内容的总结与整理,包含个人整理的内容,可能不够全面或不够准备。
什么是deployment
众所周知,pod是我们在k8s进行操作时的最小单元,实际的容器都是部署在pod中。那么当pod部署为多个时,如果我们需要对pod进行升级、回滚、增加、减少等等操作时怎么处理呢?这就涉及到了本文中的deployment。deployment是pod的一个管理部署,通过deployment的配置,我们自动对pod进行操作及管理。也就是实际上我们一般不进行pod配置的操作,而是通过利用deployment无状态部署的更改完成对于pod的实际管理。
如何使用deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: dp
spec:
replicas: 1
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- image: nginx
name: hello-nginx
如上面的部署文件所示,这是一个对于nginx的部署文件。我们的pod中的容器为nginx,而根据配置文件中的配置所示,我们拥有1个pod副本。通过该配置文件所构建的pod,也拥有相同的标签。部署的管理以及后续可能进行的服务配置,可以通过标签进行选择,这样就能够实现对于实际容器内镜像等内容的实际访问。通过上述的配置文件,我们也就完成了无状态部署的操作,在k8s中完成了整体内容的配置。
deployment的作用
我们的无状态部署一般有以下的几种作用,主要是针对pod的管理。
- 扩容操作
- 扩容主要是通过配置文件中部署数量的变更,完成实际pod数量的扩容及缩容处理
- 版本升级操作
- 版本升级主要是通过镜像内容版本的变更,实现对于容器内容的重新构建。
- 滚动更新
- 滚动更是是我们可以在部署文件中进行更新策略的指定,选择先生成新的镜像再关闭旧的镜像,或者为了保持一致性先进行旧容器的关闭。
- 存活探针
- 存活探针是指容器内的检测,例如检测到死锁等等内容会进行容器的重启操作。
- 就绪探针
- 就绪探针主要是检测pod什么时候可以进行请求的接收,当所有容器都就绪时,才认为该pod就绪。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。