k8s-yaml格式

三种常见的项目发布方式:

蓝绿发布:

金丝雀发布(灰度发布):

滚动发布:

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

蓝绿发布:

把应用服务集群标记为两个组,分为蓝组和绿组,先升级蓝组,要把蓝组从负载均衡当中移除,绿组继续提供服务,蓝组升级完毕,再把绿组从负载均衡当中移除,绿组升级,然后都加入回负载均衡当中去,完成对外服务

蓝绿发布的特点:

  1. 一旦出现问题,问题的影响范围很大
  2. 发布策略简单
  3. 基于现在的云计算微服务,用户无感知
  4. 升级和回滚比价方便

缺点:

  1. 在发布升级的过程中,只有一部分集群对外提供服务,可能会使得集群的负载能力下降,响应变慢,需要注意给集群增加负载能力(一般来说没什么特殊需求)
  2. 短时间内可能会浪费一定的资源成本

金丝雀发布(灰度发布):

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

暂停之后不能回滚,必须全部更新完成之后,一起回滚回去

灰度发布的特点:

  1. 自动化要求比较高,对运维人员要求比较高
  2. 方便发现问题,及时解决,影响范围比较小
  3. 用户无感知,可以实现一个平滑过渡,比较节约资源
  4. 发布策略比较复杂
  5. 不易回滚,必须要全部发布成功之后才能回滚

滚动更新:是的deployment的默认方式,

演示

创建:

kubectl set image deployment nginx nginx=nginx:1.24 --record && kubectl rollout pause deployment nginx

等待一段时间:

查看回滚状态:

查看版本

回滚,只能全部升级完成之后,一起回滚

回滚:

查看版本

声明式资源管理方法(YAML文件):

特点:

  1. 适合对资源的修改操作,这是陈述式的弱项
  2. 声明式管理依赖于YAML文件,所有的内容都在YAML文件之中
  3. 编辑好的YAML文件,还是要依靠陈述式的命令,发布到k8s集群当中

如何发布呢,三种方式:

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

Apply -f:既然可以创建资源对象也可以更新资源对象,如果YAML文件更改了,apply可以直接更新资源对象

Delete -f:删除YAML文件当中的声明的资源对象

YAML文件如何生成呢:

  1. 手打
  2. 可以根据已有的资源

演示根据已有的资源:

强制执行yml文件--force

演示service文件

同理pod也行:

常见到的YAML文件格式:

  1. deployment的YAML文件 daemonset statefulset
  2. Service的YAML文件
  3. 不急于控制器的pod的YAML文件

K8s当中支持两种声明式的资源管理方式:

  1. YAML格式,用于配置和管理资源对象
  2. Json格式,主要用于在api接口间的消息传递

Command

Args

定义容器运行的命令参数,类型与docker的CMD和entrypoint

Args可以理解docker中的cmd,给command传参

Command和args都会覆盖原容器的标准输出(CMD和ENTRYPOINT)

YAML文件怎么写:

查看创建格式

编写yml文件:

查看模板:

Deployment的YAML

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx1

  namespace: guoqi

  labels:

    wdf: nginx1

spec:

  replicas: 3

  selector:

    matchLabels:

      wdf: nginx1

  template:

    metadata:

      labels:

        wdf: nginx1

    spec:

      containers:

       - name: nginx

         image: nginx:1.10

        # posts:

        #  - containerPort: 80

查看service模板:

kubectl explain service

service的yaml

apiVersion: v1

kind: Service

metadata:

  name: nginx-service

  namespace: guoqi

  labels:

    wdf: nginx1

spec:

  type: NodePort

  ports:

  - port: 80

    targetPort: 80

  selector:

    wdf: nginx1

Pod的YAML

查看格式

apiVersion: v1

kind: Pod

metadata:

  name: centos1

  namespace: guoqi

spec:

  restartPolicy: Always

  containers:

  - name: centos

    image: centos:7

详细查看信息:

kubectl describe pod -n guoqi centos1

查看日志:

kubectl logs -n guoqi centos1

Command;Args

定义容器运行的命令参数,类似与docker的CMD和ENTRYPOINT

Args可以理解docker中的cmd,给command传参

Command和args都会覆盖原容器的标准输出(CMD和ENTRYPOINT)

如何定义多条命令:

建议格式,多个命令写在一行

不能同时有两个command,command和ARG不能同时出现,除非你要传参,都会容器的标准输出(CMD和enterpoint)

总结今天的内容:

三种发布方式

蓝绿发布:

灰度发布(重点):,基于deployment的滚动发布方式,使用了一个机制pause,resume继续,回滚:所有都升级完成之后才可以回滚

滚动发布:

三种YAML格式:

Deployment:

Service:

Pod:

相关推荐

  1. k8sYAML文件详解

    2024-01-03 12:18:03       48 阅读
  2. 玩转k8syaml介绍

    2024-01-03 12:18:03       54 阅读
  3. k8s Yaml语法解析

    2024-01-03 12:18:03       36 阅读
  4. K8S 哲学 - yaml文件

    2024-01-03 12:18:03       29 阅读
  5. k8s&&如何写yaml文件

    2024-01-03 12:18:03       28 阅读
  6. k8s kubectl 常用yaml

    2024-01-03 12:18:03       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-03 12:18:03       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-03 12:18:03       97 阅读
  3. 在Django里面运行非项目文件

    2024-01-03 12:18:03       78 阅读
  4. Python语言-面向对象

    2024-01-03 12:18:03       88 阅读

热门阅读

  1. 成为更好的软件开发人员的几点要求

    2024-01-03 12:18:03       50 阅读
  2. 第十章 软件测试的原则(笔记)

    2024-01-03 12:18:03       52 阅读
  3. RNN文本分类任务实战

    2024-01-03 12:18:03       45 阅读
  4. socket实现web应用的本质

    2024-01-03 12:18:03       44 阅读
  5. 运维工程师的出路

    2024-01-03 12:18:03       55 阅读
  6. 【node.js】如何确保node.js卸载干净

    2024-01-03 12:18:03       47 阅读
  7. vue 开发npm插件

    2024-01-03 12:18:03       57 阅读
  8. Golang 项目如何生成 swagger 文档

    2024-01-03 12:18:03       59 阅读
  9. 快速创建Docker私有仓库

    2024-01-03 12:18:03       62 阅读
  10. 浅谈命令模式

    2024-01-03 12:18:03       57 阅读