【发布时间】:2017-11-17 12:35:01
【问题描述】:
我正在尝试使用 Deployment/RC/Replica-set 在 kubernetes 中模拟 Daemon-set。
我想要达到的目标:
作为 daemon-set kind 在每个节点上部署 POD,我想在每个节点上部署 pod,但没有 kind daemonset。
有什么办法吗?找不到合适的方法来做到这一点。
【问题讨论】:
标签: docker kubernetes
我正在尝试使用 Deployment/RC/Replica-set 在 kubernetes 中模拟 Daemon-set。
我想要达到的目标:
作为 daemon-set kind 在每个节点上部署 POD,我想在每个节点上部署 pod,但没有 kind daemonset。
有什么办法吗?找不到合适的方法来做到这一点。
【问题讨论】:
标签: docker kubernetes
您可以通过 hostPort 在 Kubernetes 中使用 Deployment/ReplicaSet 来做到这一点。
假设您在 Kubernetes 集群中有 4 个节点,您可以创建一个部署或副本集,其 hostPort 和副本数等于集群中的节点数。
例如,您想在 clustersize 等于 4 的每个节点上运行 nginx pod,然后您在部署/复制集定义中提到主机端口到容器端口。 kubernetes 调度器将无法在同一主机上调度超过 1 个 pod,这样所有节点都至少调度了一个 pod。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-hello
labels:
tier: frontend
app: nginx-hello
spec:
replicas: 4
template:
metadata:
labels:
tier: frontend
app: nginx-hello
spec:
containers:
- name: nginx-hello
image: nginxdemos/hello
ports:
- containerPort: 80
hostPort: 8088
【讨论】:
node 之一是NotReady,则必须有多个pod 和hostPort 在一个node 中,这必须无法启动第二个pod,因为hostPort已经被占用了。
pod,除非在Ready Nodes的数量发生变化的时候增加或减少replicas。
您可以在此处查看更多用例
http://alesnosek.com/blog/2017/02/14/accessing-kubernetes-pods-from-outside-of-the-cluster/
不能在同一个节点上调度使用相同 hostPort 的两个容器,并且 hostPort 的使用被认为是特权。 因此它有一些限制,例如
1) 没有。副本数不应超过 no。将耗尽主机端口的节点数:)
2) 所有主机都必须处于健康状态,这样 schedular 才能在每个主机上调度 pod。
希望对你有所帮助.....
【讨论】: