当前位置:网站首页>kubernetes的Controller之deployment

kubernetes的Controller之deployment

2022-06-26 14:38:00 华为云

kubernetes的Controller之deployment

Controller是kubernetes集群中管理和运行容器的对象,pod通过Controller进行应用的操作,Controller与pod通过label标签来对应,Controller可以进行负载

deployment是pod控制器的一种,部署无状态的应用,它用来管理pod和replicaSet,它支持滚动升级等功能

使用yaml来创建应用

首先我们使用命令创建一个yaml文件

kubectl create deployment web --image=nginx --dry-run -o yaml > nginx.yaml

其中web表示应用的名字

这样我们就可以生成一个Nginx的yaml文件,然后可以基于这个文件做修改,使用这个文件的话使用命令

kubectl apply -f nginx.yaml

然后对外暴露端口:

kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1.yaml

其中port是内部端口,target-port是对外暴露的端口

完成之后可以使用下面的命令查看服务的状态

kubectl get pods,svc

我们刚才说它支持应用的升级、回滚和弹性伸缩

升级

使用命令

kubectl set image deployment web nginx=nginx:1.16

通过设置应用的版本号来让应用升级

升级的过程在应用容器创建完成后旧版本的应用才会暂停

查看升级状态

kubectl rollout status deployment webname

回滚上一版本命令:

kubectl rollout undo deployment web

也可以回滚到指定的版本,加入参数- -to revision=3

查看历史版本

kubectl rollout history deployment web

总结

deployment可以保证支撑服务的pod数量,动态伸缩,弹性扩缩容,但是它没有解决如何进行服务访问的问,当新的节点以新的ip启动的时候,不能确定它的ip和端口,从而不能进行服务的发现和负载均衡,这就需要service对象了。service就像个注册中心,通过service拿到提供的ip和port,service还可以进行负载均衡,pod和service的关联是通过label和selector进行关联的。Service三种常用的类型有ClusterIp,NodePort和LoadBalancer,默认是ClusterIp,LoadBalancer可以在对外访问的时候。可以添加yaml文件中type字段的属性值更改service类型。

️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我️,点赞,评论,转发
  2. 关注盼盼小课堂,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
  3. 有不当之处欢迎批评指正。
原网站

版权声明
本文为[华为云]所创,转载请带上原文链接,感谢
https://bbs.huaweicloud.com/blogs/361793