K8s资源对象的基本管理之使用命令行的方式(升级、回滚、扩容、缩容)
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,博文大纲:一、资源创建二、解决客户端无法访问k8s内部pod所运行的服务三、搭建私有仓库,并自定义镜像四、版本扩容、缩容五、服务的升级与回滚一、资源创建本次博文主要介绍如何使用命令行的方式创建资源![
千家信息网最后更新 2025年12月02日K8s资源对象的基本管理之使用命令行的方式(升级、回滚、扩容、缩容)
博文大纲:
一、资源创建
二、解决客户端无法访问k8s内部pod所运行的服务
三、搭建私有仓库,并自定义镜像
四、版本扩容、缩容
五、服务的升级与回滚
一、资源创建
本次博文主要介绍如何使用命令行的方式创建资源!
[root@master ~]# kubectl run test --image=nginx:latest --replicas=5//基于httpd的镜像创建一个deployment类型的控制组,名称为test,并指定副本数量为5[root@master ~]# kubectl get deployments. //查看deployment控制器NAME READY UP-TO-DATE AVAILABLE AGEtest 5/5 5 5 6m26s//可以看到deployment的name是我们指定的test[root@master ~]# kubectl get replicasets. //查看replicasets这个控制器NAME DESIRED CURRENT READY AGEtest-66cbf74d74 5 5 5 7m50s//可以看到replicasets的NAME就是在deployment的NAME后面追加了一串ID号[root@master ~]# kubectl get pod -o wide //查看pod的详细信息NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEStest-66cbf74d74-5tcqz 1/1 Running 0 9m33s 10.244.1.7 node01 test-66cbf74d74-6975b 1/1 Running 0 9m33s 10.244.2.3 node02 test-66cbf74d74-d7wcg 1/1 Running 0 9m33s 10.244.1.6 node01 test-66cbf74d74-d9lj6 1/1 Running 0 9m33s 10.244.1.5 node01 test-66cbf74d74-r4fmp 1/1 Running 0 9m33s 10.244.2.2 node02 //可以看到该pod的NAME就是在上面replicasets的后面又追加了一段ID 也可以使用以下方法,查看控制器的详细信息!方法如下:
[root@master ~]# kubectl describe deployments. test//查看名为test控制器的详细信息返回的信息如图:
[root@master ~]# kubectl describe replicasets. test//查看replicasets控制器的详细信息返回的结果如图:
从以上创建一个pod的过程中,就可以看出当我们执行创建资源的命令后,deployment这个控制器会通过replicaset控制器去管理并创建所需的pod!
二、解决客户端无法访问k8s内部pod所运行的服务
当k8s集群创建pod完成后,集群内部是可以访问pod所提供的服务的,方法如下:
[root@master ~]# kubectl get pod -o wide //查看pod的详细信息NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEStest-66cbf74d74-5tcqz 1/1 Running 0 28m 10.244.1.7 node01 test-66cbf74d74-6975b 1/1 Running 0 28m 10.244.2.3 node02 test-66cbf74d74-d7wcg 1/1 Running 0 28m 10.244.1.6 node01 test-66cbf74d74-d9lj6 1/1 Running 0 28m 10.244.1.5 node01 test-66cbf74d74-r4fmp 1/1 Running 0 28m 10.244.2.2 node02 集群内部测试访问:
集群内部访问是没有问题,但是此时除了集群内部,外部是访问不到的,这就很伤脑筋了。不过好在k8s提供了完美的解决方案,实现过程如下:
[root@master ~]# kubectl run web --image=nginx:latest --port=80 --replicas=2//创建一个名为web的deployment的资源对象,并映射容器的80端口到宿主机[root@master ~]# kubectl expose deployment web --name=service --port=80 --type=NodePort//创建一个service(名称可以自定义),将部署web资源对象的80端口映射出来[root@master ~]# kubectl get svc service //查看创建service的信息NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice NodePort 10.110.139.176 80:31070/TCP 35s//可以看出将部署的服务端口映射到了宿主机的31070端口 客户端访问测试:
注意:是访问群集中任意节点都可以访问k8s集群中pod所提供的服务!
三、搭建私有仓库,并自定义镜像
搭建私有仓库可以参考博文:Docker搭建私有仓库(registry与Harbor)
仓库选择registry或者是Harbor都可以,为了简单起见。这里搭建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 --insecure-registry 192.168.1.1:5000[root@master ~]# systemctl daemon-reload [root@master ~]# systemctl restart docker//重启docker服务使配置文件生效,node01、node02的操作一致[root@node01 ~]# scp root@master:/usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service[root@node01 ~]# systemctl daemon-reload [root@node01 ~]# systemctl restart docker//node01的操作[root@node02 ~]# scp root@master:/usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service [root@node02 ~]# systemctl daemon-reload [root@node02 ~]# systemctl restart docker//node02的操作##############搭建私有仓库完成##################[root@master ~]# mkdir v{1,2,3}[root@master ~]# cd v1[root@master v1]# echo -e "FROM nginx:latest\nADD index.html /usr/share/nginx/html/" > Dockerfile[root@master v1]# echo -e "hello lvzhenjiang:v1
" > index.html[root@master v1]# docker build -t 192.168.1.1:5000/nginx:version1 .[root@master v1]# cp Dockerfile ../v2/[root@master v1]# cp Dockerfile ../v3/[root@master v1]# echo -e "hello lvzhenjiang:v2
" > ../v2/index.html[root@master v1]# echo -e "hello lvzhenjiang:v3
" > ../v3/index.html[root@master v1]# cd ../v2[root@master v2]# docker build -t 192.168.1.1:5000/nginx:version2 .[root@master v2]# cd ../v3[root@master v3]# docker build -t 192.168.1.1:5000/nginx:version3 .//生成三个不同版本的镜像,在主页上进行区分[root@master v3]# docker push 192.168.1.1:5000/nginx:version1[root@master v3]# docker push 192.168.1.1:5000/nginx:version2[root@master v3]# docker push 192.168.1.1:5000/nginx:version3//将镜像上传到私有仓库中##################创建pod进行测试###################[root@master v3]# kubectl run nginx --image=192.168.1.1:5000/nginx:version1 --port=80 --replicas=4//基于自定义镜像(192.168.1.1:5000/nginx:v1)创建pod,副本数量为4个,并映射端口[root@master v3]# kubectl get pod -o wide | grep nginx | awk '{print $6}'10.244.2.1110.244.2.1010.244.1.1610.244.1.15//创建四个副本的IP地址[root@master v3]# curl 10.244.2.11hello lvzhenjiang:v1
[root@master v3]# curl 10.244.2.10hello lvzhenjiang:v1
//访问副本的任意IP地址都可以看到同样的页面四、版本扩容、缩容
第一种方法:
[root@master v3]# kubectl scale deployment nginx --replicas=8//使用命令行的方式进行扩容操作(缩容也是一样的道理)[root@master v3]# kubectl get pod -o wide | grep nginx | wc -l8[root@master v3]# kubectl get deployments. nginx -o yaml[root@master v3]# kubectl get deployments. nginx -o json//也可以将nginx资源类型已json或yaml文件格式输出(其中也可查看到副本的数量)第二种方法:
[root@master v3]# kubectl edit deployments. nginx//编辑名为nginx的资源类型 19 spec: //找到spec字段 20 progressDeadlineSeconds: 600 21 replicas: 6 //更改副本数量//在保存退出的一瞬间就生效了[root@master v3]# kubectl get pod -o wide | grep nginx | wc -l6//查看副本数量五、服务的升级与回滚
服务升级操作:
[root@master v3]# kubectl set image deployment nginx nginx=192.168.1.1:5000/nginx:version2//将nginx资源的镜像升级为192.168.1.1:5000/nginx:version2[root@master v3]# kubectl get pod -o wide | grep nginx | awk '{print $6}'10.244.1.1910.244.1.2110.244.1.2010.244.2.1410.244.2.1510.244.2.16[root@master v3]# curl 10.244.1.19hello lvzhenjiang:v2
//可以通过测试访问的方式进行验证[root@master v3]# kubectl get deployments. nginx -o wideNAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTORnginx 6/6 6 6 18m nginx 192.168.1.1:5000/nginx:version2 run=nginx//可以通过查看nginx资源的信息进行查看[root@master v3]# kubectl describe deployments. nginx//也可以通过查看nginx资源的详细信息进行查看查询结果如下:
[root@master v3]# kubectl set image deployment nginx nginx=192.168.1.1:5000/nginx:version3//再次升级[root@master v3]# kubectl get deployments. nginx -o wideNAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTORnginx 6/6 6 6 20m nginx 192.168.1.1:5000/nginx:version3 run=nginx//根据显示信息可以看出已经升级成功服务回滚操作:
[root@master v3]# kubectl rollout undo deployment nginx//对nginx资源进行回滚操作[root@master v3]# kubectl get deployments. nginx -o wideNAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTORnginx 6/6 4 6 22m nginx 192.168.1.1:5000/nginx:version2 run=nginx//从查询结果中可以查看已经回滚到上一个版本[root@master v3]# kubectl rollout undo deployment nginx[root@master v3]# kubectl get deployments. nginx -o wideNAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTORnginx 5/6 6 5 53m nginx 192.168.1.1:5000/nginx:version3 run=nginx//再次执行回滚操作,发现又回到版本3由此可以看出在k8s集群中版本的升级、回滚操作与docker swarm中差不多一致!
但是在k8s中回滚操作可以通过回滚到指定的版本,在以后的博文中会介绍到!
--------本文到此为止,感谢阅读--------
资源
信息
服务
仓库
控制
升级
副本
控制器
版本
镜像
集群
私有
方法
数量
端口
可以通过
测试
命令
方式
客户
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库表示列是什么代码
联想四路服务器
丰台区网络安全培训
基于工程图的位置提取数据库
一个服务器怎么做多个web
安卓服务器怎么发验证码
2021网络安全活动主题海报
戴尔t440服务器超值低价
网络安全人员方面
常用的中文期刊数据库是什么
嵌入式软件开发之路学习
湖北调度服务器厂家云主机
用数据库语句建立数据库与表
网络技术服务合同特点
数据库各个字段
科密32a数据库怎么做
紫微斗数数据库老易
互联网科技的好处
股票软件开发广州
建筑材料数据库设计
国家基金委项目查询数据库
数据库求前几个数
攻城狮网络安全吗
大连台资软件开发公司有多少
电脑服务器密码
湖南企业软件开发价格大全
海珠软件开发院校中专
河南质量软件开发科技
网上守护网络安全吗
学校的校园网络安全吗