阅读 349

K8S的名称空间创建&&版本的升级、回滚操作

K8S的名称空间创建&&版本的升级、回滚操作

1、创建私有仓库

[root@docker-k8s01 ~]# docker run -itd --name registry -p 5000:5000 --restart always registry:latest#在所有需要使用私有仓库的docker主机上添加如下配置[root@docker-k8s01 ~]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.151:5000#修改完文件后重启使之生效[root@docker-k8s01 ~]# systemctl daemon-reload [root@docker-k8s01 ~]# systemctl restart docker

2、在master节点,自定义一个镜像,基于nginx镜像,默认界面内容改为:Version:v1,版本2内容为:Version:v2.版本3内容为:Version:v3

#编写dockerfile文件[root@docker-k8s01 ~]# vim DockerfileFROM  nginx
ADD index.html /usr/share/nginx/html#编辑v1版本的首页内容[root@docker-k8s01 ~]# echo "Version:v1" > index.html#制作v1版本的镜像[root@docker-k8s01 ~]# docker build -t 192.168.171.151:5000/zyz:v1 .#制作v2版本的镜像[root@docker-k8s01 ~]# echo "Version:v2" > index.html[root@docker-k8s01 ~]# docker build -t 192.168.171.151:5000/zyz:v2 .#制作v3版本的镜像[root@docker-k8s01 ~]# echo "Version:v3" > index.html [root@docker-k8s01 ~]# docker build -t 192.168.171.151:5000/zyz:v3 .#将制作好的三个版本的镜像上传至私有仓库[root@docker-k8s01 ~]# docker push 192.168.171.151:5000/zyz:v1 [root@docker-k8s01 ~]# docker push 192.168.171.151:5000/zyz:v2[root@docker-k8s01 ~]# docker push 192.168.171.151:5000/zyz:v3

创建一个Namespace.接下来的所有操作都在此名称空间之下

[root@docker-k8s01 ~]# mkdir test[root@docker-k8s01 ~]# cd test/[root@docker-k8s01 test]# vim ns.yamlapiVersion: v1
kind: Namespace
metadata:
  name: zyz
[root@docker-k8s01 test]# kubectl apply -f ns.yaml            # 运行yaml文件namespace/zyz created
[root@docker-k8s01 test]# kubectl get ns zyz              # 查看创建的namespaceNAME   STATUS   AGE
zyz    Active   30s

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

[root@docker-k8s01 test]# vim zyz.yamlapiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: zyz
  namespace: zyz
spec:
  revisionHistoryLimit: 5         # 规定记录多少个版本,这个字段通过 kubectl explain deploy.spec  命令找到revisionHistoryLimit <integer>行获得
  replicas: 2
  template:
    metadata:
      labels:
        name: zyz
    spec:
      containers:
      - name: zyz
        image: 192.168.171.151:5000/zyz:v1       # 镜像版本为1
        ports:
        - containerPort: 80#执行该yaml文件,  --record表示记录版本历史[root@docker-k8s01 test]# kubectl apply -f zyz.yaml --record [root@docker-k8s01 test]# kubectl get pod              # 查看上面yaml文件运行的podNo resources found.#可以得出结论,如果在编写yaml文件时,指定了归属于哪个namespace,#那么执行上面的命令是查看不到运行的pod的,而不是没有运行的pod[root@docker-k8s01 test]# kubectl get pod -n zyz             # 增加“-n”选项,指定名称空间,即可看对应的podNAME                   READY   STATUS    RESTARTS   AGE
zyz-5d7cb64655-9pdcj   1/1     Running   0          98s
zyz-5d7cb64655-zzqcv   1/1     Running   0          98s#查看zyz的namespace名称空间的名为zyz的deployment资源对象[root@docker-k8s01 test]# kubectl rollout history deployment -n zyz zyz deployment.extensions/zyz 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=zyz.yaml --record=true#可以看到当前只有一个版本,也可以看到filename(文件名称)

创建一个Service资源对象,关联到上面的Deployment资源对象

[root@docker-k8s01 test]# vim zyz-svc.yamlapiVersion: v1
kind: Service
metadata:
  name: zyz-service
  namespace: zyz
spec:  type: NodePort
  selector:
    name: zyz
  ports:
  - name: zyz-port
    port: 8080           # service的IP接口
    targetPort: 80          # pod的端口
    nodePort: 31111       # 映射到宿主机的端口[root@docker-k8s01 test]# kubectl apply -f zyz-svc.yaml [root@docker-k8s01 test]# kubectl get svc           # 若不指定名称空间,是查不到对应的service的NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   9d
[root@docker-k8s01 test]# kubectl get svc -n zyz           # 使用“-n”选项查看指定的名称空间中的serviceNAME          TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
zyz-service   NodePort   10.100.89.145   <none>        8080:31111/TCP   55s

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

客户端访问k8s群集中的任意一个节点的31111端口访问其pod提供的服务
K8S的名称空间创建&&版本的升级、回滚操作
如果需要在线修改pod提供的网页文件,可以先查看到pod的name,然后直接在主节点上登录到此pod即可,命令如下

[root@docker-k8s01 httpd-web]# kubectl get pod -o wide       #查看pod的nameNAME                              READY   STATUS    RESTARTS   AGE     IP           NODE     NOMINATED NODE   READINESS GATES
httpd-devploy1-6f987c9764-5g92w   1/1     Running   0          8m35s   10.244.1.5   node01   <none>           <none>
httpd-devploy1-6f987c9764-wvgft   1/1     Running   0     [root@docker-k8s01 httpd-web]# kubectl exec -it httpd-devploy1-6f987c9764-5g92w /bin/bash    #通过指定pod的name,进入pod

现在由1版本,滚动更新至2版本、再到3版本,最后回滚到指定1版本内容

[root@docker-k8s01 test]# sed -i 's/zyz:v1/zyz:v2/' zyz.yaml        # 更新为版本2[root@docker-k8s01 test]# kubectl apply -f zyz.yaml      # 执行deployment.extensions/zyz configured          # 配置成功#访问验证[root@docker-k8s01 test]# curl 192.168.171.151:31111Version:v2#查看历史版本[root@docker-k8s01 test]# kubectl rollout history deployment -n zyz zyz deployment.extensions/zyz 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=zyz.yaml --record=true2         <none>#现在是有两个历史版本了#接下来再次升级并验证[root@docker-k8s01 test]# sed -i 's/zyz:v2/zyz:v3/' zyz.yaml [root@docker-k8s01 test]# kubectl apply -f zyz.yaml deployment.extensions/zyz configured#再次访问可以看到现在是版本3了[root@docker-k8s01 test]# curl 192.168.171.151:31111Version:v3#查看历史版本信息[root@docker-k8s01 test]# kubectl rollout history deployment -n zyz zyz deployment.extensions/zyz 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=zyz.yaml --record=true2         <none>
3         <none>#接下来执行回滚操作#回滚到版本1,需要指定namespace,“--to-revision”是指定回滚到哪个版本[root@docker-k8s01 test]# kubectl rollout undo deployment -n zyz zyz --to-revision=1deployment.extensions/zyz rolled back
[root@docker-k8s01 test]# curl 192.168.171.151:31111Version:v1
[root@docker-k8s01 test]# kubectl rollout history deployment -n zyz zyz#再次查看历史记录,发现版本1变成了版本4,之前的1已经没有了deployment.extensions/zyz 
REVISION  CHANGE-CAUSE
2         <none>
3         <none>
4         kubectl apply --filename=zyz.yaml --record=true

©著作权归作者所有:来自51CTO博客作者张九冫的原创作品,如需转载,请注明出处,否则将追究法律责任

it资源教程 http://www.137zw.com/

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐