Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes DNS故障排除_Kubernetes_Redis_Coredns - Fatal编程技术网

Kubernetes DNS故障排除

Kubernetes DNS故障排除,kubernetes,redis,coredns,Kubernetes,Redis,Coredns,我正在尝试解决K8集群v1.19中的DNS问题。有3个节点(1个控制器,2个工作节点)都使用Calico网络运行vanilla Ubuntu 20.04,用于入站负载平衡。这是所有托管的前提下,并有充分的访问互联网。它前面还有一个代理服务器(Traefik),负责处理K8集群的SSL和基础架构中的其他服务 这个问题发生在我升级连接到redis吊舱的吊舱的舵图时,但在过去的36天里,我一直很乐意运行 在其中一个pod的日志中,它显示了一个错误,无法确定redis pod的位置: 如果您有任何关于疑

我正在尝试解决K8集群v1.19中的DNS问题。有3个节点(1个控制器,2个工作节点)都使用Calico网络运行vanilla Ubuntu 20.04,用于入站负载平衡。这是所有托管的前提下,并有充分的访问互联网。它前面还有一个代理服务器(Traefik),负责处理K8集群的SSL和基础架构中的其他服务

这个问题发生在我升级连接到redis吊舱的吊舱的舵图时,但在过去的36天里,我一直很乐意运行

在其中一个pod的日志中,它显示了一个错误,无法确定redis pod的位置:


如果您有任何关于疑难解答的想法,我们将不胜感激。

这就是我们测试dns的方法

创建以下部署

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
  labels:
    app: nginx
spec:
  serviceName: "nginx"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
      volumes:
      - name: www
        emptyDir:

运行以下测试

master $ kubectl get po
NAME      READY     STATUS    RESTARTS   AGE
web-0     1/1       Running   0          1m
web-1     1/1       Running   0          1m

master $ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   35m
nginx        ClusterIP   None         <none>        80/TCP    2m

master $ kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rm
If you don't see a command prompt, try pressing enter.
/ # nslookup nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      nginx
Address 1: 10.40.0.1 web-0.nginx.default.svc.cluster.local
Address 2: 10.40.0.2 web-1.nginx.default.svc.cluster.local
/ #


/ # nslookup web-0.nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      web-0.nginx
Address 1: 10.40.0.1 web-0.nginx.default.svc.cluster.local


/ # nslookup web-0.nginx.default.svc.cluster.local
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      web-0.nginx.default.svc.cluster.local
Address 1: 10.40.0.1 web-0.nginx.default.svc.cluster.local
master$kubectl获得采购订单
名称就绪状态重新启动
web-0 1/1运行0 1m
web-1 1/1运行0 1m
master$kubectl获得svc
名称类型CLUSTER-IP外部IP端口年龄
kubernetes ClusterIP 10.96.0.1 443/TCP 35m
nginx ClusterIP None 80/TCP 2m
master$kubectl run-i--tty--image-busybox:1.28 dns测试--restart=Never--rm
如果看不到命令提示,请尝试按enter键。
/#nsnginx
服务器:10.96.0.10
地址1:10.96.0.10 kube-dns.kube-system.svc.cluster.local
姓名:nginx
地址1:10.40.0.1 web-0.nginx.default.svc.cluster.local
地址2:10.40.0.2 web-1.nginx.default.svc.cluster.local
/ #
/#nslookup web-0.nginx
服务器:10.96.0.10
地址1:10.96.0.10 kube-dns.kube-system.svc.cluster.local
名称:web-0.nginx
地址1:10.40.0.1 web-0.nginx.default.svc.cluster.local
/#nslookup web-0.nginx.default.svc.cluster.local
服务器:10.96.0.10
地址1:10.96.0.10 kube-dns.kube-system.svc.cluster.local
名称:web-0.nginx.default.svc.cluster.local
地址1:10.40.0.1 web-0.nginx.default.svc.cluster.local

为了回答我自己的问题,我删除了DNS吊舱,然后它又工作了。命令如下:

kubectl删除pod coredns-f9fd979d6-sw2qp--namespace=kube系统
这并没有解决为什么会发生这种情况,或者为什么K8没有检测到这些豆荚有问题并重新创建它们的根本问题。我将继续深入研究这个问题,并在DNS吊舱上添加更多的检测工具,以了解导致此问题的原因


如果有人对如何连接或查看仪器有任何想法,我们将不胜感激。

您的kube代理有效吗@马里乌兹克。kube代理正在工作。从集群外部,我可以访问端口443上的web客户端pod,并正确呈现。看起来是DNS服务:
kubectl run-I--tty--image-busybox:1.28 DNS测试--restart=Never--rm如果没有看到命令提示,请尝试按enter键。/#nslookup nginx服务器:10.96.0.10地址1:10.96.0.10 nslookup:无法解析“nginx”/#nslookup web-0.nginx服务器:10.96.0.10地址1:10.96.0.10 nslookup:无法解析“web-0.nginx”/#nslookup web-0.nginx.default.svc.cluster.local Server:10.96.0.10地址1:10.96.0.10 nslookup:无法解析“web-0.nginx.default.svc.cluster.local”
下一步怎么办?找到问题了吗?我面临着类似的问题。不幸的是,我没有,我们所做的是从vanilla Kubernetes切换到使用Microk8s,我们现在有多个集群,正常运行时间约为6个月,DNS没有问题。
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
  labels:
    app: nginx
spec:
  serviceName: "nginx"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
      volumes:
      - name: www
        emptyDir:

master $ kubectl get po
NAME      READY     STATUS    RESTARTS   AGE
web-0     1/1       Running   0          1m
web-1     1/1       Running   0          1m

master $ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   35m
nginx        ClusterIP   None         <none>        80/TCP    2m

master $ kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rm
If you don't see a command prompt, try pressing enter.
/ # nslookup nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      nginx
Address 1: 10.40.0.1 web-0.nginx.default.svc.cluster.local
Address 2: 10.40.0.2 web-1.nginx.default.svc.cluster.local
/ #


/ # nslookup web-0.nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      web-0.nginx
Address 1: 10.40.0.1 web-0.nginx.default.svc.cluster.local


/ # nslookup web-0.nginx.default.svc.cluster.local
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      web-0.nginx.default.svc.cluster.local
Address 1: 10.40.0.1 web-0.nginx.default.svc.cluster.local