k8s中hostname, hosts文件, DNS和代理问题, service和pod的访问问题
在kubernets中不同命名空间的服务相互访问
涉及到的是Pod和Service之间的相互访问,主要格式如下:
访问Pod:(注意下面不是直接pod的ip,而是由pod的ip组成的字符串)
{pod-ip}.{namespace}.pod.cluster.local
例如某pod的ip为 1.2.3.4,在命名空间default与DNS名称cluster.local将有一个域名:1-2-3-4.default.pod.cluster.local。
{hostname}.{subdomain}.{namespace}.svc.cluster.local
subdomain是在创建pod设定的属性,和hostname可以一起设置
访问StatefulSet:
{pod-name}.{service-name}.{namespace}.svc.cluster.local
可以进入到pod中查看/etc/hosts
访问Service:
{service-name}.{namespace}.svc.cluster.local
修改pod的hostname和subdomain
可以在 Pod /Deployment中指定pod的 hostname 和 subdomain:,例如:
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
name: busybox
spec:
hostname: busybox-1
subdomain: busybox-subdomain
containers:
name: busybox
- image: busybox
command:
- sleep
- "3600"
因为pod的访问域名是hostname.custom-subdomain.default.svc.cluster.local
所以该 Pod 的域名是 busybox-1.busybox-subdomain.default.svc.cluster.local。