簡體   English   中英

我可以通過它在Kubernetes中另一個節點上運行的另一個容器的主機名來訪問容器嗎?

[英]Can I reach a container by it's hostname from another container running on another node in Kubernetes?

我相信我的問題很簡單。 我正在做我在裸機上安裝Kubernetes集群的先決條件。

比方說我有:

master - 在第一個節點上修復的Docker DB容器的主機名

slave - Docker DB容器的主機名,它固定在第二個節點上

我是否可以從群集中的任何容器(應用程序等)與master通信,無論它是否在同一節點上運行?

這是默認行為嗎? 還是應該做任何額外的事情?

我假設我需要在YAML或JSON文件中設置hostname參數,以便Kubernetes知道主機名是什么。

可能這不是因素,但我打算使用Kubespray安裝方法,因此它可以獲得k8s的Calico網絡。

非常感謝

是,

您可以通過主機名從namespace任何容器訪問和通信。

以下是Kubernetes Service配置的示例:

---
apiVersion: v1
kind: Service
metadata:
  name: master
  labels:
    name: master
  namespace: smart-office
spec:
  ports:
  - port: 5672
    name: master
    targetPort: 5672
  selector:
    name: master

Deployment配置:

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: master
  labels:
    name: master
  namespace: smart-office
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: master
      annotations:
        prometheus.io/scrape: "false"
    spec:
      containers:
      - name: master
        image: rabbitmq:3.6.8-management
        ports:
        - containerPort: 5672
          name: master
      nodeSelector:
        beta.kubernetes.io/os: linux

而從其他服務,例如你的slaver .env將是:

AMQP_HOST=master <---- The hostname
AMQP_PORT=5672
AMQP_USERNAME=guest
AMQP_PASSWORD=guest
AMQP_HEARTBEAT=60

即使您沒有發布外部IP,它也可以在集群內部工作。

希望這可以幫到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM