K8S三种发布方式和声明式资源管理

news/2024/7/4 7:46:53 标签: kubernetes, 容器, 云原生
蓝绿发布

把应用服务集群标记位两个组,蓝组和绿组,先升级蓝组,先要把蓝组从负载均衡当中移除,绿组继续提供服务,蓝组升级完毕,再把绿组从负载均衡当中移除,绿组升级,然后都加入回负载均衡当中去,完成对外服务,对硬件资源要求很高,但是有了云计算和微服务,现在的成本也大大降低了

特点:

1.一旦出现问题,问题影响范围很大

2.发布策略简单

3.基于云计算技术和微服务,用户是无感知的

4.升级和回滚都比较方便

缺点:

在发布升级的过程之中,只有一部分集群在对外服务,可能会使集群的负载能力下降,响应变慢,需要注意给集群增加负载能力(一般来说没什么特殊需求)

段时间内可能会浪费一定的资源成本

金丝雀发布(灰度发布)

基于deployment控制器创建的服务,才可以使用这种发布方式,也算是一种滚动更新,实现了一个步骤叫暂停,也就是发布的过程中,暂时停止,只有一部分的pod先升级,其他的pod还是处于老的版本,只有一部分用户可以访问新的版本,绝大数用户还在老版本,确定无问题之后,再把剩下的老版本升级成新的版本,也就是把暂停取消,继续发布,如果有问题可以立即回滚,暂停不是回滚,一旦取消暂停只能全部升级完毕之后,再回滚。

特点:

自动化的要求比较高,对运维人员的要求比较高

方便发现问题,及时解决,影响范围比较小

用户无感知,可以实现平滑过渡,而且比较节约资源

发布策略比较复杂

不易回滚,必须等到全部发布成功之后才能回滚。

滚动发布

deployment的默认更新方式

应用程序升级,面临的最大的问题是新旧业务之间的切换,从立项>定稿>需求发布>开发>测试>发布,测试之后上线,再完美也会有问题,为了不让发生的问题影响所有用户,有了上述的三种发布方式

声明式资源管理(yaml文件)

1

适合对资源的修改操作

2

声明式管理依赖于yaml文件,所有的内容都在yaml文件当中

3

编辑好的yaml文件还是要靠陈述式命令发布到k8s集群当中

Kubectl create

只能创建,不能更新,从指定yaml文件中读取配置,创建服务,不能更新

Kubectl apply -f

既可以创建资源对象也可以更新资源对象,如果yaml文件更改了,apply可以直接更新资源对象

Kubectl delete -f

删除yaml文件中声明的资源对象,如deployment或者pod和service

Yaml文件如何生成

1手打
2

可以根据已有的资源,直接生成

1.deployment的yaml文件

2.Service的yaml文件

3.不基于控制器的pod的yaml文件

k8s当中支持两种声明式资源管理方式

yaml格式

用来配置和管理资源对象

Json格式

主要用于api接口之间消息的传递

[root@master01 k8s.yaml]# kubectl get deployments.apps
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
myapp-test   0/3     3            0           5d
nginx-chen   0/1     1            0           40h
[root@master01 k8s.yaml]# kubectl get deployments.apps nginx-chen -o yaml
展示yaml文件
[root@master01 k8s.yaml]# kubectl get deployments.apps nginx-chen -o yaml > /opt/k8s.yaml/nginx-chen.yaml
导出修改
[root@master01 k8s.yaml]# vim nginx-chen.yaml
[root@master01 k8s.yaml]# kubectl apply -f nginx-chen.yaml
Warning: resource deployments/nginx-chen is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
deployment.apps/nginx-chen configured
第二次更新必须要导出之后才能更新
[root@master01 k8s.yaml]# kubectl get pod

 deployment

apiVersion: apps/v1
#声明API版本的标签
kind: Deployment
#定义资源的类型service/pod/deployment/jod/ingress/daemonset/statefulset
metadata:
  name: nginx1
  namespace: chen
  labels:
    wdf: nginx1
#标签名可以自定义
#定义资源的元数据信息,资源名称,资源对象部署的命名空间,标签等等信息
spec:
#定义deployment的资源需要的参数属性
  replicas: 3
#定义副本数
  selector:
#定义标签选择器
    matchLabels:
      wdf: nginx1
#选择匹配的标签
  template:
#定义业务模版,如果定义了多个副本,所有的副本的属性都会按照模版的配置进行匹配
    metadata:
      labels:
        wdf: nginx1
#定义了pod的副本都使用元数据的标签和属性来进行匹配
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        posts:
        - containerPort: 80
#spec声明的是容器的相关参数,虽然我指定了容器的暴露端口是80,nginx默认的镜像就是80,即使声明了其他端口,也不会改变容器的端口,除非nginx的端口已经被修改,那么这里声明端口是可以的

service 

#定义API的版本
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: chen
  labels:
    wdf: nginx1
#这里的元数据信息包括,service的名称,所属的命名空间,以及要匹配的deployment的标签,这里的标签要和之前的标签名保持一致,否则它不知道为谁服务
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
   #nodepord: 30000
#这里可以指定访问端口,可以以不指定,不指定就会随机分配(范围是30000-32764)
  selector:
    wdf: nginx1
#匹配所有的标签都是wdf:nginx1的pod后端提供服务

pod

#定义pod的apirversion
apiVersion: v1
#定义资源的类型
kind: Pod
#定义元数据信息,主要是一些pod的名称,命名空间,标签
metadata:
  name: centos1
  namespace: chen
spec:
  restartPolicy: Never
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:Always Never Onfailue ##三种重启策略,只有异常退出才会重启,状态非0,如果状态是0,不重启,restartPolicy指的是容器的重启策略,资源类
型定义为deployment,容器的重启策略只能是Always
  containers:
  - name: centos
    image: centos:7
    command: ["echo"]
    args: ["hello,word!"]

command
args
定义容器运行的命令参数,类型于docker的CMD和entrypoint
args可以理解docker中的cmd 给command传参
command和args都会覆盖原容器的标准输出(cmd)
 
 
#定义pod的apiversion
apiVersion: v1
#定义资源的类型
kind: Pod
#定义元数据信息,pod的名称,所属的标签
metadata:
  name: centos1
spec:
  restartPolicy: Always
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:always 指的是总是重启  never 指的是挂就挂了 Onfailure(只有异常退出才会重启,状态非0,如果状
态码是0,不重启),restartPolicy指的是容器的重启策略,资源类型定义为deployment,容器的重启策略只能是Always
  containers:
  - name: centos
    image: centos:7
    args:
    - /bin/bash
    - -c
    - while true; do sleep 3600; done
#多个命令要用分号隔开
 
 
#定义pod的apiversion
apiVersion: v1
#定义资源的类型
kind: Pod
#定义元数据信息,pod的名称,所属的标签
metadata:
  name: centos1
  namespace: xiaobu
spec:
  restartPolicy: Always
#restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:always 指的是总是重启  never 指的是挂就挂了 Onfailure(只有异常退出才会重启,状态非0,如果状
态码是0,不重启),restartPolicy指的是容器的重启策略,资源类型定义为deployment,容器的重启策略只能是Always
  containers:
  - name: centos
    image: centos:7
    command: ["/usr/bin/test", "-e", "/etc/passwd"]
    command: ["/bin/bash", "-c", "touch /tmp/live ; sleep 30; rm -rf /tmp/live; slepp 3600"]
#command和args只能有一个,会把容器的标准输出覆盖,不论是args和commmand都会覆盖CMD和ENTYRPOINT
 
command和args不要同时出现,除非你要传参,都会容器的标准输出


http://www.niftyadmin.cn/n/5300349.html

相关文章

lenovo联想小新Pro-13 2020 Intel IML版笔记本电脑(82DN)原装出厂Win10系统镜像

链接:https://pan.baidu.com/s/1bJpfXudYEC7MJ7qfjDYPdg?pwdjipj 提取码:jipj 原装出厂Windows10系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式&a…

IOS - 手机安装包 ipa 常见几种方式

安装 ipa 包的方法有很多中,可以通过不同的软件安装,本文只列出了常用的几种,做个简单的归纳整理 1、iTunes 安装 数据线连接手机之后,会自动连接iTunes,(第一次连接的时候会提示是否信任此电脑&#xff0…

Java智慧校园源码,SaaS云平台,私有云部署,移动端小程序使用小程序原生语言开发

系统概述: 电子班牌系统又称之为智慧班牌,是当前校园数字化信息化建设、文化建设的主流,是校园日常工作安排、校园信息发布、班级文化风采展示、课堂交流的重要应用载体。智慧班牌系统在传统信息发布和校园文化展示功能基础上,融…

k8s中实现pod自动扩缩容

一、k8s应用自动扩缩容概述 1)背景: 在实际的业务场景中,我们经常会遇到某个服务需要扩容的场景(例如:测试对服务压测、电商平台秒杀、大促活动、或由于资源紧张、工作负载降低等都需要对服务实例数进行扩缩容操作&…

创建并使用自己的C++模块(Windows10+MSVC)

module是C20种新引入的特性,关于module的介绍和好处,网上已有大量的文章,此处也不再赘述,本文仅记录在个人的环境上创建一个简单的module并使用这个module。 环境同上一篇文章( windows10,MSVC C工具链&am…

调色学习第一章之【颜色的基本理论】

文章目录 1. 颜色的三要素1.1 色相1.2 明度1.3 纯度 2. 颜色的分类2.1 色轮2.2 三原色2.3 三间色2.4 复色2.5 补色 1. 颜色的三要素 1.1 色相 也就是我们日常生活中说道的颜色的名字,比如红橙黄绿青蓝紫 当然两个相邻的颜色,也有其他特殊的色相&#…

vue 开发npm插件

第一步 注册npm账号,附上官网链接npm官网 第二步 初始化项目,执行如下指令: npm init根据命令行提示填写对应信息,不需要则直接回车,最后会根据你填写的信息生成对应的package.json文件。 第三步 在package.json同级…

VMware虚拟机和Centos7镜像安装

文章目录 安装VMware虚拟机1、下载2、激活 安装Centos7镜像启动虚拟机 安装VMware虚拟机 1、下载 建议还是安装16版本 VMware16下载 https://www.123pan.com/s/HQeA-aX1Sh VMware15 链接:https://pan.baidu.com/s/11UD1hb6IydbxNNPxmh-MqA?pwd0630 提取码&am…