k8s学习笔记(3)- kubectl高可用部署,扩容,升级,回滚springboot应用
前言:上一篇通过rancher管理k8s,部署服务应用扩容,高可用,本篇介绍kubectl命令行部署高可用集群节点,测试升级、扩容等
1、测试环境:3节点k3s,使用其中2节点(ubuntunode1与ubuntunode2),node3暂不用
输入命令,查看节点状况

2、进入任意节点,使用kubectl命令行进行服务部署操作,我们这里用node1节点
新建一个.yaml文件,用于部署2个负载的应用,文件名称:springbootapp-2nodes.yaml

文件内容如下,kind节点使用Deployment类型:

文本如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: springbootapp-dep
labels:
app: springbootapp
spec:
replicas: 2
selector:
matchLabels:
app: springbootapp
template:
metadata:
labels:
app: springbootapp
spec:
containers:
- name: springbootapp
image: xjk27400861/springbootapp:42
ports:
- containerPort: 8080
新建一个命名空间,用于部署集群应用
命令如下:
sudo kubectl create namespace springboot2node

输入命令,创建2节点副本应用,-n 指定命名空间
命令如下:
sudo kubectl create -f springbootapp-2nodes.yaml -n springboot2node

也可以在.yaml文件中指定命名空间:

输入命令,查看pod节点运行状态
命令如下:
sudo kubectl get pods -n springboot2node

输入命令,查看副本集情况
命令如下:
sudo kubectl get rs -n springboot2node

输入命令,创建一个svc的service,暴露集群
命令如下:
sudo kubectl apply -f springbootapp-2node-svc.yaml

springbootapp-2node-svc.yaml文件内容如下:
apiVersion: v1
kind: Service
metadata:
name: springbootapp-2node-svc
namespace: springboot2node
labels:
app: springbootapp-2node-svc
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001
selector:
app: springbootapp

通过任意节点ip+端口:30001+路由即可访问应用,我这是:http://192.168.231.133:30001/hello 或 http://192.168.231.134:30001/hello

3、k8s扩容
修改配置文件springbootapp-2nodes.yaml,2节点改为3节点

输入命令,重新部署,查看副本集变为3个
sudo kubectl apply -f springbootapp-2nodes.yaml --record=true

查看pod数量,也为3个

4、k8s自愈性
删除2个pod,模拟服务器宕机状况
sudo kubectl delete pod springbootapp-dep-67656f6dc9-cncb6 springbootapp-dep-67656f6dc9-pp47x -n springboot2node

重新查看pod状况,发现又重新构建了2个新的pod,保证负载还是3台
sudo kubectl get pods -n springboot2node

5、k8s升级
修改代码,区分版本,重新构建镜像推到仓库

新镜像tag:43

修改部署文件:springbootapp-2nodes.yaml,镜像版本改为43

输入命令,重新部署应用,参数--record=true让 Kubernetes 把这行命令记到发布历史中方便后面查看
sudo kubectl apply -f springbootapp-2nodes.yaml --record=true

ContainerCreating状态的表示新版本的容器正在启动,Running的是新版本的已经运行起来了,Terminating的这个是老版本正在停止
过了一段时间,发现3个节点已经创建完成

访问应用,即可看见新版本已发布完成

6、k8s回滚应用
输入命令,查看发布历史
sudo kubectl rollout history deployment springbootapp-dep -n springboot2node

可以看到有2个版本,我们回滚到版本1的状态
sudo kubectl rollout undo deployment springbootapp-dep --to-revision=1 -n springboot2node
查看回滚状态,成功
sudo kubectl rollout status deployment springbootapp-dep -n springboot2node

访问应用,即可看见应用已回滚到老版本

7、rancher2.x对springboot2node进行迁移,迁移到default项目下,便于rancher管理

点击右侧下拉菜单,移动


命名空间已转移到项目default中

以后可以通过rancher操作应用扩容缩容回滚等,会相当方便

k8s学习笔记(3)- kubectl高可用部署,扩容,升级,回滚springboot应用的更多相关文章
- Kafka学习笔记-如何保证高可用
一.术语 1.1 Broker Kafka 集群包含一个或多个服务器,服务器节点称为broker. broker存储topic的数据. 如果某topic有N个partition,集群有N个broker ...
- k8s学习笔记(1)- 简单部署springboot应用
前言:k8s全称kubernetes,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,关于更多的k8s知识,可自行学习 1.k8 ...
- redis 学习笔记(4)-HA高可用方案Sentinel配置
上一节中介绍了master-slave模式,在最小配置:master.slave各一个节点的情况下,不管是master还是slave down掉一个,“完整的”读/写功能都将受影响,这在生产环境中显然 ...
- SpringCloud学习笔记(6)——Eureka高可用
参考Spring Cloud官方文档第12章12.3.12.5.12.6小节 12.3 High Availability, Zones and Regions 默认情况下,每一个Eureka服务器同 ...
- Spring学习笔记——Spring事务仅仅对执行时异常回滚
我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚.岂不知Spring的事务默认仅仅有在发生执行时异常即:RunTimeException时才会发生事务,假设一个方法抛出Exception ...
- Rancher Server HA的高可用部署实验-学习笔记
转载于https://blog.csdn.net/csdn_duomaomao/article/details/78771731 Rancher Server HA的高可用部署实验-学习笔记 一.机器 ...
- 【K8s学习笔记】K8s是如何部署应用的?
本文内容 本文致力于介绍K8s一些基础概念与串联部署应用的主体流程,使用Minikube实操 基础架构概念回顾 温故而知新,上一节[K8S学习笔记]初识K8S 及架构组件 我们学习了K8s的发展历史. ...
- kubernetes 1.15.1 高可用部署 -- 从零开始
这是一本书!!! 一本写我在容器生态圈的所学!!! 重点先知: 1. centos 7.6安装优化 2. k8s 1.15.1 高可用部署 3. 网络插件calico 4. dashboard 插件 ...
- kubernetes1.7.6 ha高可用部署
写在前面: 1. 该文章部署方式为二进制部署. 2. 版本信息 k8s 1.7.6,etcd 3.2.9 3. 高可用部分 etcd做高可用集群.kube-apiserver 为无状态服务使用hap ...
随机推荐
- Python中的多线程编程
前言: 线程是操作系统能够进行运算调度的最小单位(程序执行流的最小单元) 它被包含在进程之中,是进程中的实际运作单位 一个进程中可以并发多个线程每条线程并行执行不同的任务 (线程是进程中的一个实体,是 ...
- idea字节码插件JClassLib——阅读JVM字节码
idea字节码插件JClassLib--阅读JVM字节码 生成字节码文件并查看 查看字节码文件的方式:javac 文件名.java 即可生成.class文件,但是这种方式不方便 java:是运行字节码 ...
- 从一个跨二十年的glibc bug说起
1. 缘起 这几天调gcc 7.5.0 +glibc 2.23的交叉编译工具链,由于gcc 7.5.0的默认打开Werr,偶然发现了glibc一个隐藏了二十年的世纪大bug. 这个bug在glibc ...
- JVM详解(一)——概述
Test https://www.cnblogs.com/yrxing/p/14651346.html#gc的基础知识 https://www.cnblogs.com/yinzhengjie/p/92 ...
- 基于Vue+Vuex+Vue-Router+axios+mint-ui的移动端电商项目
第一步:安装Node 1.打开NodeJS的官网,下载和自己系统相配的NodeJS的安装程序,包括32位还是64位一定要选择好,否则会出现安装问题. 下载地址:https://nodejs.org/e ...
- Appium自动化(5) - 如何获取android app 的Activity 和 Package
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 在Desired Capab ...
- easyui修复浏览器刷新后,tab页全部关闭的问题
一.问题描述 使用easyui搭建的上左右页面布局,当我们在右侧打开了tab页,发现点击浏览器的刷新按钮后,整个页面会被重新渲染,导致所有打开的tab页都被关闭,回到初始状态的问题. 这个问题虽然不影 ...
- 计算机网络-HTTP篇
目录 计算机网络-HTTP篇 HTTP的一些问题 HTTP 基本概念 常见状态码 常见字段 Get 与 Post HTTP 特性 HTTP(1.1) HTTP/1.1 HTTPS 与 HTTP HTT ...
- Java学习笔记--注解和反射
注解和反射 1. 注解 注解作用: 对程序做出解释 被其他程序读取 注解格式: @注释名,还可以添加一些参数值,例如@SuppressWarnings(value="unchecked&qu ...
- ssh跳转设置
SSH工具的非常规使用 原创 景朝阳 FreeSWITCH中文社区 今天 说明:本文所有的命令是基于OpenSSH客户端7.4p1版本.如果出现命令不正确,请检测是否为此OpenSSH版本. 设置 ...