2 篇文章带有标签 “workloads”

Kubernetes中的DaemonSet

DaemonSet

确保每个节点运行一个 Pod。

使用场景

  • 日志收集
  • 资源监控
  • 网络代理

编写 DaemonSet 的YAML文件(kubia-ds.yaml)

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: kubia
spec:
  selector:
    matchLabels:
      app: kubia
  template:
    metadata:
      labels:
        app: kubia 
    spec:
      containers:
      - name: kubia 
        image: wangjunjian/kubia:latest 
        ports:
        - containerPort: 8080

创建 DaemonSet 对象

$ kubectl apply -f kubia-ds.yaml 
daemonset.apps/kubia created

查看 DaemonSet 对象

ds 是 DaemonSet 的缩写

$ kubectl get ds
NAME    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
kubia   3         3         2       3            2           <none>          22s

查看 Pod 对象 $ kubectl get pods -o wide NAME READY STATUS RESTARTS

Kubernetes中的ReplicationController和ReplicaSet

ReplicationController

保证 Pod 对象始终处于期望的运行状态。不管 Pod 因何种原因消失(节点从集群消失或pod从节点中逐出)。

控制器的协调流程

LOOP

  1. 通过标签选择器匹配 Pod
  2. 比较匹配的数量与期望的副本数量
  • 少了。使用当前的模板创建 Pod
  • 多了。删除超出数量的 Pod
  • 等于。

ReplicationController 的三个主要部分

  • selector, 标签选择器
  • replicas, 副本个数
  • template, Pod 模板

编写 ReplicationController 的YAML文件(kubia-rc.yaml) apiVersion: v1 kind: ReplicationController metadata: name: kubia spec: selector: app: kubia replicas: 2 template: metadata: labels: app: kubia spec: containers: - name: kubia image: wangjunjian/kubia:latest ports: - containerPort: 8080 ★ 可以不指定标签选择器(selector),它会自动根据 Pod 模板中的标签设置。