如何在kubernetes集群的Pod之间解析主机名?

问题描述

我正在使用自定义docker映像创建两个容器(ubuntu是基本映像)。我正在尝试从其终端ping荚。我可以使用IP地址而不是主机名来访问它。如何在不手动添加/etc/hosts的情况下实现?

注意:我不在节点中运行任何服务。我基本上是试图使用它来设置口吃。

Pod清单文件

apiVersion: v1
kind: Pod
Metadata:
  name: slurmctld
  labels:
    app: slurm
spec:
  nodeName: docker-desktop
  hostname: slurmctld
  containers:
    - name: slurmctld
      image: slurmcontroller
      imagePullPolicy: Always
      ports:
        - containerPort: 6817
      resources:
        requests:
          memory: "1000Mi"
          cpu: "1000m"
        limits:
          memory: "1500Mi"
          cpu: "1500m"  
      command: [ "/bin/bash","-c","--" ]
      args: [ "while true; do sleep 30; done;" ]
---
apiVersion: v1
kind: Pod
Metadata:
  name: worker1
  labels:
    app: slurm
spec:
  nodeName: docker-desktop
  hostname: worker1        
  containers:
    - name: worker1
      image: slurmworker
      imagePullPolicy: Always
      ports:
        - containerPort: 6818
      resources:
        requests:
          memory: "1000Mi"
          cpu: "1000m"
        limits:
          memory: "1500Mi"
          cpu: "1500m"    
      command: [ "/bin/bash","--" ]
      args: [ "while true; do sleep 30; done;" ]

解决方法

从文档here

通常,一个Pod具有以下DNS解析:

pod-ip-address.my-namespace.pod.cluster-domain.example

例如,如果default命名空间中的容器具有IP地址 172.17.0.3,而您的群集的域名为cluster.local,则Pod的DNS名称为:

172-17-0-3.default.pod.cluster.local

由服务公开的Deployment或DaemonSet创建的任何Pod 具有以下可用的DNS解析:

pod-ip-address.deployment-name.my-namespace.svc.cluster-domain.example

如果您不想处理Pod的IP不断变化,则需要创建service以使用DNS主机名公开Pod。以下是公开slurmctld窗格的服务示例。

apiVersion: v1
kind: Service
metadata:
  name: slurmctld-service
spec:
  selector:
    app: slurm
  ports:
    - protocol: TCP
      port: 80
      targetPort: 6817

假设您正在default名称空间上执行这些操作,现在应该可以通过slurmctld-service.default.svc.cluster.local

进行访问了

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...