如何将普通应用部署到 k8s master 上
【注意】最后更新于 January 16, 2020,文中内容可能已过时,请谨慎使用。
我们知道, 使用 kubeadm 建立的 k8s 集群,master 节点会被标注上 node-role.kubernetes.io/master:NoSchedule 的 taint
一种办法是将这个 taint 取消掉:
kubectl taint nodes --all node-role.kubernetes.io/master-
另一种方法是指定 toleration 描述让它能够容忍上面的 taint 。我觉得这种方式更好一些。
应用程序的 yaml 文件中,只需要简单加入以下内容就可以了:
- 使用 nodeSelector 选择需要放置的节点
- 使用 tolerations 配置需要容忍的内容
例子如下:
nodeSelector:
kubernetes.io/hostname: k8s-master1
serviceAccount: cert-manager
serviceAccountName: cert-manager
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
operator: Exists