kubernetes的Controller之deployment

举报
周杰伦本人 发表于 2022/06/26 14:15:52 2022/06/26
【摘要】 kubernetes的Controller之deployment 使用yaml来创建应用 升级 总结 ❤️ 感谢大家 kubernetes的Controller之deploymentController是kubernetes集群中管理和运行容器的对象,pod通过Controller进行应用的操作,Controller与pod通过label标签来对应,Controller可以进行负载depl...

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. 有不当之处欢迎批评指正。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。