k8s资源对象的升级、回滚、扩容、缩容
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,一、资源创建的方式之一,命令的方式创建资源,理解命令运行之后的动作,通过查看资源的方式,总结Pod名称的由来。当我们执行创建资源的命令后,deployment这个控制器会通过replicaset控制器
千家信息网最后更新 2025年02月05日k8s资源对象的升级、回滚、扩容、缩容
一、资源创建的方式之一,命令的方式创建资源,理解命令运行之后的动作,通过查看资源的方式,总结Pod名称的由来。
当我们执行创建资源的命令后,deployment这个控制器会通过replicaset控制器去管理pod,下面通过一个实例来分析,当我们执行创建资源的命令后,k8s都做了些什么(通过其NAME即可发现规律)?
运行一个deployment
[root@master ~]# kubectl run test01 --image=nginx:latest --replicas=2#运行一个nginx容器,指定副本数量为2个[root@master ~]# kubectl get deployments. #查看deployment控制器NAME READY UP-TO-DATE AVAILABLE AGEtest01 2/2 2 2 48s#可以看到deployment的name是我们指定的test01[root@master ~]# kubectl get replicasets. #然后查看replicasets这个控制器#注:replicasets可以简写为"rs"NAME DESIRED CURRENT READY AGEtest01-799bb6cd4d 2 2 2 119s#可以看到replicasets的NAME就是在deployment的NAME后面追加了一串ID号[root@master ~]# kubectl get pod #查看pod的nameNAME READY STATUS RESTARTS AGEtest01-799bb6cd4d-d88wd 1/1 Running 0 3m18stest01-799bb6cd4d-x8wpm 1/1 Running 0 3m18s#可以看到该pod的NAME就是在上面replicasets的后面又追加了一段ID
同时,可以查看每一个资源对象的详细信息,来验证上面的说法,如下:
[root@master ~]# kubectl describe deployments test01 #查看test01的详细信息
返回的信息如下,可以看到其生成了一个新的replicasets控制器,如下:
那么,现在查看其replicasets详细信息,如下:
二、如果想要client访问部署的服务,需要怎么做?关键点在哪里?
如果需要client来访问k8s部署的服务,那么需要创建一个service资源对象,并且其类型必须是NodePort,客户端通过访问service这个资源对象映射的端口,与k8s集群中的proxy进行联系,以便访问到部署的服务。
实现过程如下:
[root@master ~]# kubectl run test02 --image=nginx:latest --port=80 --replicas=2#基于nginx镜像创建deployment资源对象,映射容器的80端口到宿主机[root@master ~]# kubectl expose deployment test02 --name=web01 --port=80 --type=NodePort#创建一个service,将部署的test02的80端口映射出来[root@master ~]# kubectl get svc web01 #查看创建的web01这个service的信息NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEweb01 NodePort 10.103.223.105 80:30230/TCP 86s#可以看到将部署的服务端口映射到了宿主机的30230,
客户端访问k8s群集中的任意一个节点的30230端口,都可以访问到服务的首页,如下:
三、搭建registry仓库,。基于nginx自定义镜像,将默认访问界面更改为:hello k8s。此为1.10版本。并基于此镜像运行一个Deployment资源对象,replicas数量为4个。
#搭建registry仓库,并在群集中的节点指定到私有仓库[root@master ~]# docker run -tid --name registry -p 5000:5000 --restart always registry:latest [root@master ~]# vim /usr/lib/systemd/system/docker.service #编辑配置文件ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.20.6:5000#将修改后的配置文件发送到k8s群集中的其他节点[root@master ~]# scp /usr/lib/systemd/system/docker.service root@node01:/usr/lib/systemd/system/[root@master ~]# scp /usr/lib/systemd/system/docker.service root@node02:/usr/lib/systemd/system/#所有更改了docker配置文件的节点都需要进行以下操作,以便更改生效[root@master ~]# systemctl daemon-reload [root@master ~]# systemctl restart docker#制作自定义镜像[root@master ~]# vim DockerfileFROM nginx:latestADD index.html /usr/share/nginx/html/[root@master ~]# echo "hello k8s" > index.html[root@master ~]# docker build -t 192.168.20.6:5000/nginx:1.10 .[root@master ~]# docker push 192.168.20.6:5000/nginx:1.10 #上传至私有仓库#基于自定义镜像运行一个Deployment资源对象,replicas数量为4个。[root@master ~]# kubectl run test03 --image=192.168.20.6:5000/nginx:1.10 --port=80 --replicas=4[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}' #查看四个副本的IP地址10.244.2.2010.244.1.1810.244.1.1910.244.2.21#接下来在k8s群集内部访问该上述四个任意IP,即可看到其提供的服务,如下:#访问测试[root@master ~]# curl 10.244.2.21 hello k8s[root@master ~]# curl 10.244.2.20hello k8s
四、将上述Deployment资源对象,进行更新、扩容操作,replicas数量更新为6个.镜像仍为自定义镜像,且默认访问界面更改为:Hello update.
#更新镜像并上传至私有仓库[root@master ~]# echo "Hello update" > index.html [root@master ~]# docker build -t 192.168.20.6:5000/nginx:2.20 .[root@master ~]# docker push 192.168.20.6:5000/nginx:2.20 #更新资源对象,进行扩容[root@master ~]# kubectl set image deployment test03 test03=192.168.20.6:5000/nginx:2.20 && kubectl scale deployment test03 --replicas=6#查看pod的IP地址[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}'10.244.2.2410.244.2.2210.244.1.2110.244.2.2310.244.1.2210.244.1.20#访问测试[root@master ~]# curl 10.244.1.20Hello update[root@master ~]# curl 10.244.1.22Hello update
五、对此Deployment资源对象进行回滚操作,查看验证最后版本的访问界面内容和replicas数量。
[root@master ~]# kubectl rollout undo deployment test03 #执行回滚操作[root@master ~]# kubectl get pod -o wide | grep test03 | wc -l#查看replicas的数量还是6个6#访问测试[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}'10.244.1.2310.244.2.2710.244.1.2410.244.1.2510.244.2.2610.244.2.25[root@master ~]# curl 10.244.2.25hello k8s[root@master ~]# curl 10.244.2.26hello k8s
-------- 本文至此结束,感谢阅读 --------
资源
对象
镜像
数量
服务
仓库
信息
控制器
端口
控制
运行
命令
节点
更新
文件
方式
界面
测试
私有
配置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何知道操作了哪些数据库表
企业服务器erp
数据库工程师等级标准
台湾服务器叫什么云服务器
小儿药品广告数据库5秒
腾讯云数据库珠海
电信网络安全隐患是什么意思
黄岛区爱德邦网络技术工作室
软件开发计划书百度文库
服务器宝塔安全入口
td数据库查表空间多大
永恒之塔的服务器
河南安卓软件开发哪家好
影响数据库性能
c脚本语言连接sql数据库
lol外服开脚本不封号的服务器
c 获取请求的数据库
内存数据库和配置文件
本体软件开发有限公司
服务器内存条能到台式电脑上用吗
河北互联网科技医疗负责人
公安局网络安全管理岗位 真题
网络安全法发布的时间是
微信小程序获取数据库图片
移动网络连接数据库
筑牢网络防线提高网络安全意识
网络安全产品研究报告
皖南民宿软件开发
一户一验软件开发
网络安全属于哪一类专业