使用kubeadm部署高可用Kubernetes 1.17.0 設置了三個Master節點,而後在部署Heketi過程當中發現,Daemonset不啓動相應的pod。原來須要設置Kubernetes的Master節點參與應用調度(默認安裝Master節點不運行應用)。有兩種方法:node
長期改變節點的屬性,容許Master運行應用,執行:docker
kubectl taint nodes --all node-role.kubernetes.io/master-
臨時容許Master節點執行應用,在應用的yaml文件中添加:api
tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule
我這裏測試使用:app
apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentd-elasticsearch namespace: test labels: k8s-app: fluentd-logging spec: selector: matchLabels: name: fluentd-elasticsearch template: metadata: labels: name: fluentd-elasticsearch spec: tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule containers: - name: fluentd-elasticsearch image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2 resources: limits: memory: 200Mi requests: cpu: 100m memory: 200Mi volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true terminationGracePeriodSeconds: 30 volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers
而後保存爲test.yaml,運行:kubectl apply -f test.yaml,pod被創建起來。elasticsearch
若是沒有tolerations的設置,雖然運行成功,但pod僅在worker節點運行,若是隻有master節點,則不會啓動pod。測試