[英]How to access the service ip in kubernetes by name?
說我是否有如下的rabbitmq
服務:
apiVersion: v1
kind: Service
metadata:
name: my-rabbitmq
spec:
ports:
- port: 6379
selector:
app: my-rabbitmq
我還有另一個部署:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: A-worker
spec:
replicas: 1
containers:
- name: a-worker
image: worker-image
ports:
- containerPort: 80
env:
- name: rabbitmq_url
value: XXXXXXXXXXXXX
是否可以通過某種選擇器在第二次部署中將服務ip設置為環境變量? 換句話說,第二個部署yaml中的value: XXXXXXXXXX
應該為value: XXXXXXXXXX
。 (請注意,我知道我可以通過kubectl get services
獲取服務ip,但是我想知道如何通過服務名稱或標簽來設置它)。 歡迎任何建議!
kubernetes將服務的主機,端口,協議等環境變量注入到pod容器中(請參閱此文檔 )。
kubectl exec <pod> printenv
是檢查設置了哪些env變量的一種方法。
如果服務是在Pod之后創建的,則可能不存在env var,因此終止(重新啟動)Pod是確保填充新環境變量的一種方法。
約定通常為大寫<SERVICE_NAME>_SERVICE_HOST
。 您可以使用以下語法在pod規范中顯式設置它。
- name: rabbitmq_url value: $(MY-RABBITMQ_SERVICE_HOST)
請記住,變量已由k8s注入,這只是對其進行別名。 您可能需要在應用程序層/ script中更新引用,以將k8s注入的環境變量用於服務。
兩行之間的閱讀(希望對您有所幫助):
K8s在每個吊艙內自動為您創建服務環境變量。 有關詳細信息,請參見https://kubernetes.io/docs/concepts/services-networking/service/#environment-variables 。
另一種方法是啟用kube dns,在這種情況下,只需使用服務名稱就可以聯系服務IP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.