陈述式资源管理(2)

命令行。声明式资源管理

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

1、蓝绿发布

2、金丝雀发布(灰度发布)

3、滚动发布

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

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

陈述式资源管理(2)_第1张图片

蓝绿发布的特点:

1、一旦出现问题,影响的范围会很大

2、发布策略简单

3、基于现在云计算和微服务,用户是无感知的

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

蓝绿发布的缺点:

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

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

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

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

灰度发布特点

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

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

3、用户无感知,平滑过度。节约资源

4、发布策略比较复杂

5、不易回滚。必须等全部发布成功后才能回滚

滚动更新:

deployment的默认方式

声明式管理方法(yaml文件):

1、适合对资源的修改操作

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

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

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

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

delete -f  删除yaml文件中声明的资源对象

yaml:

deployment

pod

service

yaml如何生成:

1、手打

2、根据已有的资源直接生成

1、deployment的yaml文件(daemonset statefulset)

2、service的yaml文件格式

3、不急于控制器的pod的yaml文件

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

1、yaml格式,用于配置和管理资源对象

2、json格式: 主要用于在api接口之间消息的传递

kubectl explain deploy

command

args

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

args可以理解成docker中的cmd,给command传参。

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

你可能感兴趣的:(k8s)