关于k8s解析不到pod dns信息
这其实是自己对k8s的dns解析不理解,service和pod在k8s中的dns记录形式不同, service是通过名字的,pod是用ip的(192-168-0-1的形式)。但是,通过pod-ip访问,很傻,已经知道ip,那还查什么,于是乎,又有了 pod-hostname.subdomain.ns.cluster.local的方式;需要在pod spec中配置 hostname和subdomain。
官网demo使用headless-svc,实际上用其他svc也可以,文末用clusterIP的svc演示。
- busybox:1.28,latest版本不行
apiVersion: v1
kind: Service
metadata:
name: default-subdomain
spec:
selector:
name: busybox
clusterIP: None
ports:
- name: foo # Actually, no port is needed.
port: 1234
targetPort: 1234
---
apiVersion: v1
kind: Pod
metadata:
name: busybox1
labels:
name: busybox
spec:
hostname: busybox-1
subdomain: default-subdomain
containers:
- image: busybox:1.28
command:
- sleep
- "3600"
name: busybox
---
apiVersion: v1
kind: Pod
metadata:
name: busybox2
labels:
name: busybox
spec:
hostname: busybox-2
subdomain: default-subdomain
containers:
- image: busybox:1.28
command:
- sleep
- "3600"
name: busybox
- service
[root@cce-demo1522483688765-00274 cka]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
http ClusterIP 10.247.44.63 <none> 8080/TCP 3d
kubernetes ClusterIP 10.247.0.1 <none> 443/TCP 3d
mydb ClusterIP 10.247.6.172 <none