docker - 在 master 上运行的 Kubernetes 应用程序 - DaemonSet

标签 docker configuration kubernetes daemon kubectl

有什么方法可以避免在 master 上部署为 DaemonSet 的应用程序的执行吗?
我已经看到这是预期的行为,但我想以某种方式避免执行。

常规 pod 不会在 master 上进行调度,但 DaemonSet pod 会进行调度。

如果是,是否可以在yml文件中设置此信息(参数..等??)?

 kubectl create -f mydaemon.yml

logspri-4zwl4              1/1       Running           0          <invalid>   X.X.X.X   k8s-master-e7c355e2-0
logspri-kld2w              1/1       Running           0          <invalid>   X.X.X.X     k8s-agent-e7c355e2-0
logspri-lksrh              1/1       Running           0          <invalid>   X.X.X.X     k8s-agent-e7c355e2-1

我想避免我的 pod 在 k8s-master-e7c355e2-0

上运行

我已经尝试过:

annotations:
          scheduler.alpha.kubernetes.io/affinity: >
            {
              "nodeAffinity": {
                "requiredDuringSchedulingRequiredDuringExecution": {
                  "nodeSelectorTerms": [
                    {
                      "matchExpressions": [
                        {
                          "key": "kubernetes.io/role",
                          "operator": "NotIn",
                          "values": ["master"]
                        }
                      ]
                    }
                  ]
                }
              }
            }

还尝试应用以下角色(按照建议),但不起作用:

kubectl get nodes
NAME                    STATUS                     AGE       VERSION
k8s-agent-e7c355e2-0    Ready                      49d       v1.5.3
k8s-agent-e7c355e2-1    Ready                      49d       v1.5.3
k8s-master-e7c355e2-0   Ready,SchedulingDisabled   49d       v1.5.3

我应该执行:

VirtualBox:~/elk/logspout$ kubectl taint node k8s-master-e7c355e2-0 k8s-master-e7c355e2-0/ismaster=:NoSchedule
node "k8s-master-e7c355e2-0" tainted

即使主服务器似乎被污染了,我也看到应用程序始终在主服务器上。

Role:           
Labels:         beta.kubernetes.io/arch=amd64
            beta.kubernetes.io/instance-type=Standard_D2
            beta.kubernetes.io/os=linux
            failure-domain.beta.kubernetes.io/region=northeurope
            failure-domain.beta.kubernetes.io/zone=0
            kubernetes.io/hostname=k8s-master-e7c355e2-0
Annotations:        volumes.kubernetes.io/controller-managed-attach-detach=true
Taints:         <none>
CreationTimestamp:  Wed, 17 May 2017 14:38:06 +0200
Phase:          
Conditions:

出了什么问题? 你能给我正确的执行命令吗?

报告了同样的问题 here没有明显的解决方案:

kubectl taint nodes nameofmaster dedicated=master:NoSchedule

谢谢 普里斯科

最佳答案

来自https://github.com/kubernetes/kubernetes/issues/29108 ,您可以向 Master 节点 kubelet 添加一个 taint 标志,这样即使 DaemonSet 中的 pod 也不会调度到那里

   --register-with-taints=node.alpha.kubernetes.io/ismaster=:NoSchedule

您需要在节点中重新启动 kubelet

关于docker - 在 master 上运行的 Kubernetes 应用程序 - DaemonSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44925883/

相关文章:

docker - 找不到startNodeManager.sh

java - 将属性文件保留在单独的 Java 项目中的最佳方法或最佳实践是什么?

java - kubernetes:无法拉取图像

docker - 无法使用docker-compose从本地主机访问docker应用程序

bash - 为什么docker-compose需要为exec命令撰写文件?

configuration - 如何恢复到 OpenWrt 路由器配置?

mysql - 从 minikube 访问在本地主机上运行的 mysql

kubernetes - 为什么要在云平台的node内水平缩小/放大pod?

docker - 无法下载 docker golang 镜像 : No command specified

java - Hadoop 配置 - 集群