我相信我的问题很简单。我正在做在裸机上安装Kubernetes集群的先决条件。
假设我有:
master -Docker DB容器的主机名,该主机名固定在第一个节点上
slave -Docker DB容器的主机名,固定在第二个节点上
是否可以从群集中的任何容器(应用程序等)与主通信,而不管它是否在同一节点上运行?
这是默认行为吗?
还是应该做其他的事情?
我假设我需要在YAML或JSON文件中设置hostname
参数,以便Kubernetes知道主机名是什么。
可能这不是因素,但是我计划使用Kubespray安装方法,以便为k8s获得Calico网络。
非常感谢
最佳答案
是,
您可以通过主机名从namespace
中的任何容器访问和通信。
这是有关Kubernetes Service
configure的示例:
---
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,它也将在Cluster内部运行。
希望这可以帮到你。
关于docker - 我可以从Kubernetes中另一个节点上运行的另一个容器通过其主机名访问一个容器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55677937/