2017-08-02 71 views
1

我正嘗試在部署時將靜態IP地址分配給吊艙。如何在部署中使用Kubernetes將靜態IP分配給某個吊艙

apiVersion: apps/v1beta1 
kind: Deployment 
metadata: 
    name: aws-test-mysql 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: aws-test-mysql 
    spec: 
     containers: 
     - name: aws-test-mysql 
     image: 461677341235123.dkr.ecr.us-east-1.amazonaws.com/aws-test-mysql 
     securityContext: 
      privileged: true 
     ports: 
     - containerPort: 3306 
      hostIP: 172.20.32.50 
      hostPort: 3306 
     resources: 
      requests: 
      cpu: 100m 
     imagePullSecrets: 
     - name: ecrkey 

正如你所看到的,當我描述我的pod時,它是用另一個IP創建的。

test-mbp1:aws test$ kubectl describe pods | grep IP 
IP:  100.96.1.3 

我正在嘗試部署一個靜態IP在「kind:Deployment」而不是服務上的pod。

這是可行嗎?

+0

我們不能分配靜態IP地址給POD。我們需要創建服務並添加選擇器作爲POD標籤。然後使用服務IP/DNS名稱訪問您的羣集。 – sfgroups

回答

0

由於kubernetes IP層的動態特性,靜態IP不能分配給Pod。

既然你不想附加一個服務(這是最好的方式imho),一個緊密的選擇是將部署轉換爲一個StatefulSet。這將爲Pod提供一個靜態主機名,它或多或少地滿足您的要求。

StatefulSet的第一個副本將被稱爲aws-test-mysql-0.<kubernetes.cluster.tld>

+0

謝謝!我實際上使用了服務路由,因爲靜態IP不能分配給Pod。不過,我也會研究statefullset。謝謝(你的)信息。 – Unxcellent

+0

你知道這個嗎? https://stackoverflow.com/questions/45848298/automatic-spot-pricing-for-kops-deployment – Unxcellent

相關問題