k8s资源清单

一、 什么是控制器

Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为

二、 控制器的分类

ReplicationController 和 ReplicaSet  维护用户定义副本数

Deployment   声明式 创建rs管理pod
DaemonSet   在所有node或者部分node运行pod
StateFulSet  解决有状态服务的问题
Job/CronJob  批处理任务/ 按照计划任务特定时间来执行特定任务
Horizontal Pod Autoscaling  pod 自动伸缩扩容

三、 ReplicationController 和  ReplicaSet

ReplicationController(RC)用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的 Pod 来替代;而如果异常多出来的容器也会自动回收;
在新版本的 Kubernetes 中建议使用 ReplicaSet 来取代 ReplicationController 。ReplicaSet 跟ReplicationController 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: nginx
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80
rs 示例

四、RS 与 Deployment  的关联

 

 

   4.1  应用场景

    1)定义Deployment来创建Pod和ReplicaSet

    2)滚动升级和回滚应用

    3)扩容和缩容
    4)暂停和继续Deployment

  

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment1
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx-test
    spec:
      containers:
      - name: nginx-test
        image: nginx:1.7.9
        ports:
        - containerPort: 80
deployment来创建pod

  4.2 扩容

  kubectl scale deployment nginx-deployment --replicas 10

  4.3 如果集群支持 horizontal pod autoscaling 的话,还可以为Deployment设置自动扩展

  kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80

  4.4 更新镜像也比较简单

  kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

  4.5  回滚

  kubectl rollout undo deployment/nginx-deployment

    

posted @ 2020-04-08 13:49  鱼丸粗面没鱼丸  阅读(177)  评论(0编辑  收藏  举报