Internal-Dns

可以將主機別名分配給 Kubernetes 中的部署嗎?如果是這樣,怎麼做?

  • February 1, 2018

本文描述瞭如何在 kubernetes 中為 pod 分配主機別名,無論如何都可以為部署而不是 pod 這樣做嗎?

任何其他在 kubernetes 中添加主機條目以提供第一行主機名解析的建議(在檢查像 8.8.8.8 這樣的伺服器之前)也將受到歡迎作為答案。

是的,這是可能的。您需要做的就是遵循與 pod 規範相同的建議,但不是將其應用於 pod 的 YAML 文件,而是將其應用於 YAML 文件以進行部署。例如,如果您已經在執行部署,則可以通過發出以下命令來編輯目前部署。

$ kubectl 編輯部署 DEPLOYMENT_NAME

這將允許您以 YAML 格式訪問目前正在執行的部署的編輯模式。

您需要在部署的“模板:規範”欄位中添加“hostAliases”部分,它允許您為 pod/容器配置模板。因此,為了直覺地展示這一點,這裡是我在項目中執行的部署的 YAML,我可以通過執行上面提到的命令來編輯它:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 annotations:
   deployment.kubernetes.io/revision: "6"
 creationTimestamp: 2018-01-30T14:42:48Z
 generation: 7
 labels:
   app: nginx-site-app
 name: nginx-site
 namespace: default
 resourceVersion: "778922"
 selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-site
 uid: dc4535333d-05cb-11e8-b5c0-7878748e0178
spec:
 replicas: 1
 selector:
   matchLabels:
     app: nginx-site-app
 strategy:
   rollingUpdate:
     maxSurge: 1
     maxUnavailable: 1
   type: RollingUpdate
 template:
   metadata:
     creationTimestamp: null
     labels:
       app: nginx-site-app
   spec:
     containers:
     - image: gcr.io/myprojectid/tuneup-nginx:latest
       imagePullPolicy: Always
       name: nginx-container
       ports:
       - containerPort: 80
         protocol: TCP
       resources: {}
       terminationMessagePath: /dev/termination-log
       terminationMessagePolicy: File
     dnsPolicy: ClusterFirst
     restartPolicy: Always
     schedulerName: default-scheduler
     securityContext: {}
     terminationGracePeriodSeconds: 30
status:
 availableReplicas: 1
 conditions:
 - lastTransitionTime: 2018-01-30T14:55:28Z
   lastUpdateTime: 2018-01-30T14:55:28Z
   message: Deployment has minimum availability.
   reason: MinimumReplicasAvailable
   status: "True"
   type: Available
 observedGeneration: 7
 readyReplicas: 1
 replicas: 1
 updatedReplicas: 1

如果我想將“hostAliases”添加到此部署中的 pod,我需要將此資訊添加到 pod 模板規範部分,如下所示(注意它與“容器”一致(***重要 - 值得注意的是我的文件中有兩個“規範”部分-我不想將其添加到第一個規範部分,而是定義 pod 模板的模板規範部分):

    spec:
      containers:
      - image: gcr.io/development-project-192309/tuneup-nginx:latest
        imagePullPolicy: Always
        name: nginx-container
        ports:
        - containerPort: 80
          protocol: TCP
      hostAliases:
      - ip: 127.0.0.1
        hostnames:
        - myadded.examplehostname

引用自:https://serverfault.com/questions/895088