docker - 我可以从Kubernetes中另一个节点上运行的另一个容器通过其主机名访问一个容器吗?

标签 docker networking kubernetes kubespray

我相信我的问题很简单。我正在做在裸机上安装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/

相关文章:

python - 无法从docker容器内的python连接redis

docker - 如何使用Jenkinsfile在子目录中构建Dockerfile

sql-server - 带有 PersistentVolumeClaim 的 SQL Server pod

laravel - 如何配置 Homestead 和 xip.io?

file - golang中如何通知TCP客户端文件结束?

docker - 如何在docker-composer内部检索服务的IP?

linux - 使用 raspberry-pi 零和 wifi 加密狗作为接入点

ssl - 如何在 GKE 上的 RabbitMQ UI 管理中添加 SSL?

node.js - Kubernetes 和 Socket.io 404 错误 - 在本地可以工作,但应用到 kubernetes 后就不行了

linux - 使用 Calico 开源混合操作系统 Linux 和 windows 上的 Kubernetes