千家信息网

K8S的名称空间创建&&版本的升级、回滚操作(回滚到指定版本)

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,创建一个私有仓库。#运行一个registry容器[root@master ~]# docker run -tid --name registry -p 5000:5000 --restart alwa
千家信息网最后更新 2026年11月02日K8S的名称空间创建&&版本的升级、回滚操作(回滚到指定版本)
创建一个私有仓库。
#运行一个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#修改上述配置项,指定私有仓库的监听地址及端口[root@master ~]# systemctl daemon-reload [root@master ~]# systemctl restart docker
1)在master节点,自定义一个镜像,基于nginx镜像,默认界面内容改为:Version:v1,版本2内容为:Version:v2.版本3内容为:Version:v3
[root@master test]# vim Dockerfile       #编写dockerfile文件FROM nginxADD index.html /usr/share/nginx/html/[root@master test]# echo "Version:v1" > index.html   #编辑版本1的首页[root@master test]# docker build -t 192.168.20.6:5000/ljz:v1 .  #制作版本1的镜像#制作版本2的镜像[root@master test]# echo "Version:v2" > index.html[root@master test]# docker build -t 192.168.20.6:5000/ljz:v2 .#制作版本3的镜像[root@master test]# echo "Version:v3" > index.html[root@master test]# docker build -t 192.168.20.6:5000/ljz:v3 .#将上面三个镜像上传至私有仓库[root@master test]# docker push 192.168.20.6:5000/ljz:v1[root@master test]# docker push 192.168.20.6:5000/ljz:v2[root@master test]# docker push 192.168.20.6:5000/ljz:v3
2)创建一个Namespace.接下来的所有操作都在此名称空间之下。
[root@master test]# vim ns.yaml      #编写yaml文件apiVersion: v1kind: Namespacemetadata:  name: lvjianzhao[root@master test]# kubectl apply -f ns.yaml     #运行yaml文件namespace/lvjianzhao created[root@master test]# kubectl get ns lvjianzhao     #查看创建的namespace。NAME         STATUS   AGElvjianzhao   Active   11s

创建一个Deployment资源对象。镜像版本为v1。

[root@master test]# vim lvjianzhao.yaml      #编写yaml文件apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: lvjianzhao  namespace: lvjianzhaospec:  revisionHistoryLimit: 5           #规定记录多少个版本,这个字段通过 kubectl explain deploy.spec  命令找到revisionHistoryLimit 行获得  replicas: 2  template:    metadata:      labels:        name: lvjianzhaoa    spec:      containers:      - name: lvjianzhao        image: 192.168.20.6:5000/ljz:v1     #镜像版本为1        ports:        - containerPort: 80[root@master test]# kubectl apply -f lvjianzhao.yaml  --record  #执行该yaml文件,  --record表示记录版本历史[root@master test]# kubectl get pod  #查看上面yaml文件运行的podNo resources found.#可以得出结论,如果在编写yaml文件时,指定了归属于哪个namespace,#那么执行上面的命令是查看不到运行的pod的,而不是没有运行的pod[root@master test]# kubectl get pod -n lvjianzhao    #增加"-n"选项,指定名称空间,即可看对应的podNAME                         READY   STATUS    RESTARTS   AGElvjianzhao-865d4b6b6-2mlcj   1/1     Running   0          101slvjianzhao-865d4b6b6-7kbnb   1/1     Running   0          101s[root@master test]# kubectl rollout history deployment -n lvjianzhao lvjianzhao #查看lvjianzhao的namespace名称空间的名为lvjianzhao的deployment资源对象deployment.extensions/lvjianzhao REVISION  CHANGE-CAUSE1         kubectl apply --filename=lvjianzhao.yaml --record=true#可以看到当前只有一个版本
3)创建一个Service资源对象,关联到上面的Deployment资源对象。
[root@master test]# vim ljz-svc.yaml    #创建service的yaml文件apiVersion: v1kind: Servicemetadata:  name: lvjianzhao-service  namespace: lvjianzhaospec:  type: NodePort  selector:    name: lvjianzhaoa  ports:  - name: lvjianzhao-port    port: 8080    #这是service的IP端口    targetPort: 80     #这是pod的端口    nodePort: 31111          #这是映射到宿主机的端口[root@master test]# kubectl apply -f ljz-svc.yaml   #执行yaml文件service/lvjianzhao-service created[root@master test]# kubectl get svc         #同理,若不指定名称空间,是查不到对应的service的NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGEkubernetes   ClusterIP   10.96.0.1            443/TCP   4d1h[root@master test]# kubectl get svc -n lvjianzhao   #使用"-n"选项查看指定的名称空间中的serviceNAME                 TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGElvjianzhao-service   NodePort   10.104.119.94           8080:31111/TCP   111s

注意:创建的service资源对象必须和创建的deployment资源对象在同一个namespace中,否则无法进行关联!!!

现在客户端就可以访问k8s群集中的任意一个节点的31111端口访问其pod提供的服务了,如下:

如果需要在线修改pod提供的网页文件,可以先查看到pod的name,然后直接在主节点上登录到此pod即可,命令如下:

[root@master httpd-web]# kubectl get pod -o wide       #查看pod的nameNAME                              READY   STATUS    RESTARTS   AGE     IP           NODE     NOMINATED NODE   READINESS GATEShttpd-devploy1-6f987c9764-5g92w   1/1     Running   0          8m35s   10.244.1.5   node01              httpd-devploy1-6f987c9764-wvgft   1/1     Running   0     [root@master httpd-web]# kubectl exec -it httpd-devploy1-6f987c9764-5g92w /bin/bash    #通过指定pod的name,进入pod
现在由1版本,滚动更新至2版本、再到3版本,最后回滚到指定1版本内容。
[root@master test]# sed -i 's/ljz:v1/ljz:v2/' lvjianzhao.yaml   #更改为版本2[root@master test]# kubectl apply -f lvjianzhao.yaml    #执行deployment.extensions/lvjianzhao configured[root@master test]# curl 127.0.0.1:31111    #访问验证Version:v2[root@master test]# kubectl rollout history deployment -n lvjianzhao lvjianzhao #再次查看历史版本deployment.extensions/lvjianzhao REVISION  CHANGE-CAUSE1         kubectl apply --filename=lvjianzhao.yaml --record=true2         #现在是有两个历史版本了#接下来再次升级并验证[root@master test]# sed -i 's/ljz:v2/ljz:v3/' lvjianzhao.yaml [root@master test]# kubectl apply -f lvjianzhao.yaml    [root@master test]# curl 127.0.0.1:31111     #现在是版本3了Version:v3[root@master test]# kubectl rollout history deployment -n lvjianzhao lvjianzhao #查看历史版本信息deployment.extensions/lvjianzhao REVISION  CHANGE-CAUSE1         kubectl apply --filename=lvjianzhao.yaml --record=true2         3         #现在执行回滚操作:[root@master test]# kubectl rollout undo deployment -n lvjianzhao lvjianzhao --to-revision=1   #回滚到版本1,需要指定namespace,"--to-revision"是指定回滚到哪个版本deployment.extensions/lvjianzhao rolled back[root@master test]# curl 127.0.0.1:31111   #验证Version:v1[root@master test]# kubectl rollout history deployment -n lvjianzhao lvjianzhao #再次查看历史记录,发现版本1变成了版本4。deployment.extensions/lvjianzhao REVISION  CHANGE-CAUSE2         3         4         kubectl apply --filename=lvjianzhao.yaml --record=true
版本 文件 镜像 对象 资源 名称 空间 历史 端口 运行 仓库 内容 节点 私有 再次 命令 这是 制作 验证 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是第几次科技革命的成果 互联网 科技公司 奇酷互联网科技公司 互联网科技视频 朗涯互联网科技 科技互联网创业计划书 互联网养老 桔豆科技 互联网企业和科技型企业 受益于互联网科技的高速发展 互联网还是高科技吗 青海科技产业互联网发展 威龙国际互联网科技公司 世界互联网领先科技成果获奖 南通创西澳互联网科技有限公司 互联网硬科技公司 互联网金融运营模式中的金融科技 银川新华互联网科技学校是国营吗 互联网领先科技活动 美国五大互联网科技公司市值多少 北京瑞云互联网科技有限公司 湖北九亚互联网络科技有限公司 上海卓越科技互联网 深圳恒合互联网络科技有限公司 云电互联网科技 互联网科技上市公司 广西拼得多互联网科技有限公司 全球顶尖互联网科技公司 辽宁互联网新科技 互联网科技机房 互联网对科技影响
0