K8S简历(六)

今天看到了Pod的控制器才发现我的前几天写的Pod资源清单都是不能在生成环节中使用的,因为他无法实现动态扩容和缩小。而今天学的ReplicaSet,Deployment,DaemonSet,Job,CronJob,StatefulSet等控制器就能很好完成生成环节中各种各样的需求。

ReplicaSet控制器:

ReplicaSet简称rs,rs控制器主要实现了对Pod对象副本数量的控制,当Pod有故障时会自动创建,当Pod数量大于期望值时会自动删减。也能实现弹性伸缩,Pod版本升级(金丝雀发布)。

Deployment控制器:

Deployment控制器是基于rs控制器的二次开发,所以rs控制器有的功能他都有,还对Pod版本升级后的发布有更多的选择,也增加了回滚的功能,能控制多个rs控制器。

DaemonSet控制器:

DaemonSet控制器用于在集群中的全部节点上同时运行一份指定的Pod资源副本,当有新节点连接会自动生成Pod,如果有节点移除也会把Pod资源回收。

Job控制器:

Job控制器用于管理只用运行一次的Pod,在Pod运行结束后不会重启,而是显示Pod对象置于“Completed”状态 。

CronJob控制器:

CronJob周期性任务作业计划,控制其运行的时间和重复运行的方式。

StatefulSet控制器:

StatefulSet控制器其实是Deployment一种 变种,他主要管理有状态的Pod资源副本。

他具有新的特点:
  1. 具有固定(主机名)
  2. 具有持久化存储
  3. 需要按顺序部署和扩展
  4. 需要按顺序终止及删除
  5. 需要按顺序滚动更新

发布方式:

今天我了解了两个不同的发布方式:金丝雀发布和蓝绿发布。

金丝雀发布:

慢慢的把新版本替换旧版本,一台一台慢慢替换。
优点:如果现版本有问题不至于整个集群挂,用户体验良好

蓝绿发布:

两个rs控制器,只要server指向已经更新好的rs控制器就可以实现版本更新。
优点:更新速度快,如果发现新版本有问题也可以快速回滚。

rs控制器例子:

apiVersion: /apps/v1
bind: ReplicaSet
metadata:
  name: www-rs
  namespace: default
spec:
  relicas: 2
  selector:
    matchLables:
      app: nginx
    template:
      mentadata:
        name: www
        lables:
          app: nginx
      spec:
        containers:
        - name: nginx
          image: nginx
          port:
          containersPort: 80

如果你想更改已经生成的rs控制器数量和rs控制中的Pod镜像版本可以通下面命令修改

kubectl edit rs www-rs

注:如果你修改了镜像的版本需要手动删除现有的Pod才会生成最新镜像。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。