我可以通过 Kubernetes 中另一个节点上的另一个容器 运行 的主机名访问容器吗?
Can I reach a container by it's hostname from another container running on another node in Kubernetes?
我相信我的问题很简单。我正在执行在裸机上安装 Kubernetes 集群的先决条件。
假设我有:
master - Docker 固定在第一个节点上的数据库容器的主机名
slave - Docker 固定在第二个节点上的数据库容器的主机名
我可以从集群中的任何容器(应用程序等)与 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,它也会在集群内工作。
希望对您有所帮助。
我相信我的问题很简单。我正在执行在裸机上安装 Kubernetes 集群的先决条件。
假设我有:
master - Docker 固定在第一个节点上的数据库容器的主机名
slave - Docker 固定在第二个节点上的数据库容器的主机名
我可以从集群中的任何容器(应用程序等)与 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,它也会在集群内工作。
希望对您有所帮助。