Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >K8S的名称空间创建&&版本的升级、回滚操作

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

作者头像
小手冰凉
发布于 2020-08-28 02:01:31
发布于 2020-08-28 02:01:31
50100
代码可运行
举报
文章被收录于专栏:小手冰凉小手冰凉
运行总次数:0
代码可运行

1、创建私有仓库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#编写dockerfile文件
[root@docker-k8s01 ~]# vim Dockerfile
FROM  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.接下来的所有操作都在此名称空间之下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker-k8s01 ~]# mkdir test
[root@docker-k8s01 ~]# cd test/
[root@docker-k8s01 test]# vim ns.yaml
apiVersion: 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              # 查看创建的namespace
NAME   STATUS   AGE
zyz    Active   30s

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker-k8s01 test]# vim zyz.yaml
apiVersion: 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文件运行的pod
No resources found.
#可以得出结论,如果在编写yaml文件时,指定了归属于哪个namespace,
#那么执行上面的命令是查看不到运行的pod的,而不是没有运行的pod
[root@docker-k8s01 test]# kubectl get pod -n zyz             # 增加“-n”选项,指定名称空间,即可看对应的pod
NAME                   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资源对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker-k8s01 test]# vim zyz-svc.yaml
apiVersion: 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”选项查看指定的名称空间中的service
NAME          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提供的服务

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker-k8s01 httpd-web]# kubectl get pod -o wide       #查看pod的name
NAME                              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版本内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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:31111
Version: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=true
2         <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:31111
Version: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=true
2         <none>
3         <none>
#接下来执行回滚操作
#回滚到版本1,需要指定namespace,“--to-revision”是指定回滚到哪个版本
[root@docker-k8s01 test]# kubectl rollout undo deployment -n zyz zyz --to-revision=1
deployment.extensions/zyz rolled back
[root@docker-k8s01 test]# curl 192.168.171.151:31111
Version: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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
k8s 之yaml文件基本格式
注:yaml文件严格要求缩进,默认不同层次等级是两个空格的缩进 1、使用httpd镜像创建一个Deployment资源对象
小手冰凉
2020/08/28
1.3K0
K8s——数据持久化自动创建PV
实现k8s的数据持久化的流程为:搭建nfs底层存储---->创建PV---->创建PVC---->创建pod。最终pod中的container实现数据的持久化。
小手冰凉
2020/09/11
2.4K0
K8s——Ingress-nginx原理及配置
在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,在Kubernetes中目前提供了以下几种方案:
小手冰凉
2020/09/15
6.7K0
K8s——Ingress-nginx原理及配置
K8s——MySQL实现数据持久化
5、创建pod+svc(service) 这个pod是提供的MySQL服务,并将其映射到宿主机,可以做和client端通信
小手冰凉
2020/09/11
2K0
k8s实践(三):pod常用操作
Pod是kubernetes中你可以创建和部署的最小也是最简单位。一个Pod代表着集群中运行的一个进程。
loong576
2019/09/10
3.7K0
k8s实践(三):pod常用操作
k8s——针对有状态服务实现数据持久化
对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧是指两个来自相同发起者的请求在服务器端是否具备上下文关系。如果是状态化请求,那么服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。而对于无状态请求,服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。 无状态的服务器程序,最著名的就是WEB服务器。每次HTTP请求和以前都没有什么关系,只是获取目标URI。得到目标内容之后,这次连接就被杀死,没有任何痕迹。在后来的发展进程中,逐渐在无状态化的过程中,加入状态化的信息,比如COOKIE。服务端在响应客户端的请求的时候,会向客户端推送一个COOKIE,这个COOKIE记录服务端上面的一些信息。客户端在后续的请求中,可以携带这个COOKIE,服务端可以根据这个COOKIE判断这个请求的上下文关系。COOKIE的存在,是无状态化向状态化的一个过渡手段,他通过外部扩展手段,COOKIE来维护上下文关系。 状态化的服务器有更广阔的应用范围,比如MSN、网络游戏等服务器。他在服务端维护每个连接的状态信息,服务端在接收到每个连接的发送的请求时,可以从本地存储的信息来重现上下文关系。这样,客户端可以很容易使用缺省的信息,服务端也可以很容易地进行状态管理。比如说,当一个用户登录后,服务端可以根据用户名获取他的生日等先前的注册信息;而且在后续的处理中,服务端也很容易找到这个用户的历史信息。 状态化服务器在功能实现方面具有更加强大的优势,但由于他需要维护大量的信息和状态,在性能方面要稍逊于无状态服务器。无状态服务器在处理简单服务方面有优势,但复杂功能方面有很多弊端,比如,用无状态服务器来实现即时通讯服务器,将会是场恶梦。
小手冰凉
2020/09/15
2.3K0
K8S之Pod控制器
我们之前通过资源配置清单,自己创建了一个Pod资源,如果此时这个Pod被删除了,K8S是不会帮我们重新创建的。通过这种方式创建的Pod称之为自主式Pod资源,如果线上所有的服务都需要我们来手动管理Pod,那将是一个巨大的运维开销,那K8S就失去了其存在的意义,所以,K8S为我们提供了Pod控制器资源,专门用于对Pod的管理。Pod控制器可以帮我们自动保持Pod状态处于我们期望的状态,例如Pod的副本数,Pod中使用的容器镜像版本,Pod的更新策略等等。
后场技术
2021/07/23
3470
k8s资源对象的升级、回滚、扩容、缩容
命令的方式创建资源,理解命令运行之后的动作,通过查看资源的方式,总结Pod名称的由来
小手冰凉
2020/08/27
7080
kubectl更新镜像和回滚命令
使用kubernetes 进行升级的时候并不需要停止业务,kubectl 支持滚动升级的方式,每次更新一个pod,而不是同时删除整个服务。
Ryan-Miao
2020/06/12
5.6K0
Kubernetes(k8s)之jenkins实现k8s应用的版本升级和回归,k8s集群部署项目
1、想要实现jenkins一键自动发布代码的话,还需要手动在k8s部署一下集群项目。首先,创建一个deloypment,如下所示:
别先生
2020/07/16
7310
K8S基础搭建使用
由上可见,需要本地镜像仓库需要 pod-infrastructure:latest 这个 pod 基础镜像,所以需要在拉取镜像 docker pull tianyebj/pod-infrastructure,并且 push 到本地镜像仓库
cuijianzhe
2022/06/14
5660
K8S基础搭建使用
Kubernetes的Rolling Update实战
版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢
耕耘实录
2018/12/20
4150
再战 k8s(12):Deployment 指导下 Pod 的升级和回滚
当集群中的某个服务需要升级时,我们需要停止目前与该服务相关的所有Pod,然后下载新版本镜像并创建新的Pod。如果集群规模比较大,则这个工作变成了一个挑战,而且先全部停止然后逐步升级的方式会导致较长时间的服务不可用。
看、未来
2022/05/06
1.4K0
再战 k8s(12):Deployment 指导下 Pod 的升级和回滚
k8s群集的三种Web-UI界面部署
//这里使用的dashboard版本较高,相较于之前的版本访问必须使用火狐浏览器,这里不需要。
小手冰凉
2020/09/15
4.2K0
k8s群集的三种Web-UI界面部署
备战CKA每日一题——第7天
官方中set image命令: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#set
我的小碗汤
2019/12/10
5280
基于k8s Deployment的弹性扩缩容及滚动发布机制详解
k8s第一个重要设计思想:控制器模式。k8s里第一个控制器模式的完整实现:Deployment。它实现了k8s一大重要功能:Pod的“水平扩展/收缩”(horizontal scaling out/in)。该功能从PaaS时代开始就是一个平台级项目必备编排能力。
JavaEdge
2024/01/12
7580
基于k8s Deployment的弹性扩缩容及滚动发布机制详解
k8s 实践经验(四):实操中学 k8s 五种资源(2)deployment
接上一篇,上一篇的 pod 占的篇幅有点多,但是我感觉才讲了一点,pod 真要拿出来讲能讲好几节课。
看、未来
2022/05/06
3050
k8s 实践经验(四):实操中学 k8s 五种资源(2)deployment
Kubernetes(k8s)的deployment资源
答:deployment也是保证pod高可用的一种方式,明明已经有RC(Replication Controller),为什么还要引入deployment呢?是因为deployment解决了RC(Replication Controller)的一个痛点。是因为RC在进行版本升级的时候,会造成一个问题,就是它的svc(Service)短时间内访问不了了,deployment就是解决这个问题的。
别先生
2020/06/23
9410
Kubernetes(k8s)的deployment资源
helm——工具使用举例
https://hub.helm.sh/ ,这是一个helm模板仓库的网站,上面有大量的helm模板,可以自行查看。
小手冰凉
2020/09/18
9680
helm——工具使用举例
ASP.NET Core on K8S深入学习(5)Rolling Update
本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。
Edison Zhou
2019/08/20
4840
ASP.NET Core on K8S深入学习(5)Rolling Update
推荐阅读
相关推荐
k8s 之yaml文件基本格式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档