K8s资源对象的基本管理之使用命令行的方式(升级、回滚、扩容、缩容)
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,博文大纲:一、资源创建二、解决客户端无法访问k8s内部pod所运行的服务三、搭建私有仓库,并自定义镜像四、版本扩容、缩容五、服务的升级与回滚一、资源创建本次博文主要介绍如何使用命令行的方式创建资源![
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
科技赋能下的互联网金融
腾讯阿里互联网科技
互联网科技未来
朗涯互联网科技
极限挑战互联网科技
广州互联网络科技有限公司
互联网 视角下的科技创新
玖二柒互联网科技公司待遇
广州恒生互联网科技有限
世界互联网科技公司市值排名
哈尔滨屹滨互联网科技有限公司
华夏恒生互联网科技013171
翼展科技 首家互联网医院
小米互联网科技园入驻
伍佰万互联网科技怎么赚钱
银行科技岗属于互联网吗
有人说阿里系是互联网科技企业
普陀区互联网教育科技管理办法
宁波允成互联网科技有限公司
伍佰万互联网科技是干嘛的
山东特亿宝互联网科技有限公司
互联网的科技
北京互联网科技
互联网金融公司科技
智网互联网科技
九亚互联网科技
互联网科技公司有哪些
互联网科技大会大佬
杭州科技互联网公司有哪些
互联网科技快速发展优美句子