【发布时间】:2019-09-30 17:58:50
【问题描述】:
在 dns 中查找 statefulsets srv 记录时出现问题
我的 yaml 文件
kind: List
apiVersion: v1
items:
- apiVersion: v1
kind: Service
metadata:
name: sfs-svc
labels:
app: sfs-app
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: sfs-app
- apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: sfs-app # has to match .spec.template.metadata.labels
serviceName: "sfs-svc"
replicas: 3
template:
metadata:
labels:
app: sfs-app # has to match .spec.selector.matchLabels
spec:
terminationGracePeriodSeconds: 10
containers:
- name: test-container
image: nginx
imagePullPolicy: IfNotPresent
command: [ "sh", "-c"]
args:
- while true; do
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE >> /var/sl/output.txt;
printenv MY_POD_IP >> /var/sl/output.txt;
date >> var/sl/output.txt;
cat /var/sl/output.txt;
sleep 999999;
done;
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
volumeMounts:
- name: www
mountPath: /var/sl
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
#storageClassName: classNameIfAny
resources:
requests:
storage: 1Mi
$ Kubectl 集群信息
Kubernetes master 运行在https://192.168.99.100:8443 KubeDNS 运行在https://192.168.99.100:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
$ kubectl 版本
客户端版本:version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20 :08:12Z", GoVersion:"go1.11.5", 编译器:"gc", 平台:"linux/amd64"} 服务器版本:version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:02: 58Z", GoVersion:"go1.12.1", 编译器:"gc", 平台:"linux/amd64"}
$ kubectl get po,svc,statefulset
> NAME READY STATUS RESTARTS AGE
> pod/web-0 1/1 Running 0 45m
> pod/web-1 1/1 Running 0 45m
> pod/web-2 1/1 Running 0 45m
>
> NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
> service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 46m
> service/sfs-svc ClusterIP None <none> 80/TCP 45m
>
> NAME READY AGE
> statefulset.apps/web 3/3 45m
>
问题:我没有获得 statefulset 无头服务的 DNS 地址
当我尝试 $ nslookup sfs-svc.default.svc.cluster.local
> Server: 127.0.0.53
> Address: 127.0.0.53#53
>
**> ** server can't find sfs-svc.default.svc.cluster.local: SERVFAIL**
>
【问题讨论】:
-
看起来您使用的地址不是集群的 DNS 服务器,因为
kube-dns服务的 IP 将驻留在集群的ServiceCIDR (10.96.0.x) 中(并且不会返回SERVFAIL缺少记录) -
另外,虽然我坚信查询错误的地址是造成问题的根本原因,但您还必须专门询问
SRV记录,因为默认情况下 nslookup 不会返回所有记录类型:nslookup -type=srv sfs-svc.default.svc.cluster.local -
您能否详细说明您是如何运行
nslookup的?这是任何豆荚吗?这个 yaml 对我来说很好用。
标签: kubernetes minikube kube-dns srv kubernetes-statefulset