Pod控制器入门


一、无状态控制器

ReplicationController:

  • 已被放弃

ReplicaSet:

  • 3个组件组成

      1. 期望副本数

      2. 标签选择器

      3. Pod资源模板

Deployment:

  • 目前管理无状态应用最好的控制器,支持滚动更新,回滚,运行在ReplicaSet控制器之上。

例1:

帮助:kubectl explain rs

vim rs-demo.yaml

apiVersion: apps/v1                                                                                                                                                                                                                                       
kind: ReplicaSet
metadata:
  name: myapp
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
      release: canary
  template:
    metadata:
      name: myapp-pod
      labels:
        app: myapp
        release: canary
        environment: qa
    spec:
      containers:
      - name: myapp-container
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80
        livenessProbe:
          httpGet:
            port: http
            path: /index.html
          initialDelaySeconds: 1
          periodSeconds: 3
        readinessProbe:
          httpGet:
            port: http
            path: /index.html
          initialDelaySeconds: 1
          periodSeconds: 3

DaemonSet:

  • 确保每一个集群中的节点精确运行一个特定的Pod副本,系统级的后台服务,新节点加入后,自动添加。

帮助

kubectl explain ds

例1

vim ds-demo.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
      role: logstor
  template:
    metadata:
      labels:
        app: redis
        role: logstor
    spec:
      containers:
      - name: redis
        image: redis:4.0-alpine
        ports:
        - name: redis
          containerPort: 6379
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-ds
  namespace: default
spec:
  selector:
    matchLabels:
      app: filebeat
      release: stable
  template:
    metadata:
      labels:
        app: filebeat
        release: stable
    spec:
      containers:
      - name: filebeat
        image: ikubernetes/filebeat:5.6.5-alpine
        env:
        - name: REDIS_HOST
          value: redis.default.svc.cluster.local
        - name: REDIS_LOG_LEVEL
          value: info

二、有状态控制器

StatefulSet:

  • 每个应用单独控制

三、周期性控制器

job:
Cronjob: