2017-06-15 74 views
2

我試圖使用Deployment/RC/Replica-set在kubernetes中模擬守護進程組。使用部署模擬在kubernetes中設置的守護進程

我想達到的目標:

由於daemonset樣的部署一樣聰明我想每個節點上部署羣中的每個節點上的豆莢,但沒有那種daemonset。

有沒有辦法做到這一點?找不到正確的方法來做到這一點。

回答

1

您可以使用Kubernetes中的Deployment/ReplicaSet與hostPort來完成此操作。

假設您在Kubernetes集羣中有4個節點,則可以創建一個部署或複製數據集,其中hostPort和replicas等於集羣中的節點數。

例如,您希望在簇大小等於4的每個節點上運行nginx pod,那麼您在部署/複製集定義中提到了hostport到容器端口。 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 
+0

也可以將此用例,以多區域kubernetes羣集上使用setbased標籤條件例如在兩個區zoneA中和zoneB中環境=生產,在2級區的節點安排(ZoneA中, zoneB) – gaurav9

+0

但是,如果你的一個'node'是'NotReady',在'node'中必須有'hostPort'多於一個'pod',它必須不能啓動第二個pod,因爲'hostPort'已被佔領。 – Weike

+0

而k8s將不會在新節點中啓動新的'pod',除非您在'Ready Nodes'數量發生變化時添加或減少'replicas'。 – Weike

0

您可以使用相同的HOSTPORT無法安排在同一節點上和HOSTPORT的使用被認爲是一種特權在這裏看到更多的用例

http://alesnosek.com/blog/2017/02/14/accessing-kubernetes-pods-from-outside-of-the-cluster/

兩個容器。 因此它有一些限制,如

1)沒有。的複製品不應該超過不。的節點會排出主機運行:)

2)所有主機必須處於健康狀態,以便調度可以安排每個主機上的pod。

希望它可以幫助你.....