标签: coredns

CoreDNS无法在Kubernetes集群中运行

我正在尝试设置Kubernetes集群,但我无法运行CoreDNS.我运行了以下命令来启动集群:

sudo swapoff -a
sudo sysctl net.bridge.bridge-nf-call-iptables=1
sudo kubeadm init

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s- version=$(kubectl version | base64 | tr -d '\n')"
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
Run Code Online (Sandbox Code Playgroud)

为了检查POD kubectl get pods --all-namespaces,我明白了

NAMESPACE     NAME                                    READY   STATUS             RESTARTS   AGE
kube-system   coredns-68fb79bcf6-6s5bp                0/1     CrashLoopBackOff   6          10m
kube-system   coredns-68fb79bcf6-hckxq                0/1     CrashLoopBackOff   6          10m
kube-system   etcd-myserver                           1/1     Running            0          79m
kube-system   kube-apiserver-myserver                 1/1     Running            0          79m
kube-system   kube-controller-manager-myserver        1/1     Running …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes ubuntu-16.04 coredns

11
推荐指数
3
解决办法
1万
查看次数

如何进入 CoreDNS pod kuberrnetes?

我有一个正在运行的 k8s 集群,其中包含两个 CoreDNS 副本。但是当我尝试输入 POD 的 bash 提示符时,它向我抛出以下错误

# kubectl exec -it coredns-5644d7b6d9-285bj -n kube-system sh
error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "94f45da89fa5493a8283888464623788ef5e832dc31e0d89e427e71d86391fd6": OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"sh\": executable file not found in $PATH": unknown
Run Code Online (Sandbox Code Playgroud)

但我可以毫无问题地登录其他 Pod。我尝试使用 nsenter 和内核进程 ID 它可以工作,但它只适用于与网络相关的开放,例如,

# nsenter -t 24931 -n ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes coredns

10
推荐指数
3
解决办法
1万
查看次数

如何让 CoreDNS 在我的 Raspberry Pi Kubernetes 集群上解析?

我已经按照许多在线教程在四个 Raspberry Pi 4 上设置了 Kubernetes 集群。我最终使用 Flannel 作为网络插件,因为它似乎是唯一一个真正适用于 RPi 的插件,根据2017 年的本指南,pod 网络 CIDR 为 10.244.0.0/16 。几乎一切正常……kube-system 命名空间中的所有基本 pod 都在运行/健康,我可以拉下图像并启动新容器。起初我无法获得任何 pod 日志,但是通过在每个节点上打开端口 10250 很快就解决了这个问题。

但是DNS解析好像还是有问题。我应该澄清一下,主机上的 DNS 解析显然有效,因为集群能够下载我指定的任何容器映像。但是一旦容器运行,它就无法“拨出”任何东西。作为测试,我arm32v7/buildpack-deps:latest在 pod 中运行容器。它可以很好地从 Docker 集线器中提取图像。但是当我进入它并简单地输入curl https://www.google.com它时,它会在最终超时之前挂起。我启动的任何需要与外部 Internet 交互的 Pod 也是如此:它们挂起、挂起、挂起。

以下是我已经在每个节点上运行的所有与网络相关的命令:

sudo iptables -P FORWARD ACCEPT
sudo iptables -A FORWARD -i cni0 -j ACCEPT
sudo iptables -A FORWARD -o cni0 -j ACCEPT
sudo ufw allow ssh
sudo ufw allow 443  # can't remember why i ran this one …
Run Code Online (Sandbox Code Playgroud)

kubernetes ufw coredns

9
推荐指数
1
解决办法
1018
查看次数

如何更改 Kubernetes 中运行的 Pod 限制?

我有一个由虚拟机组成的自制 Kubernetes 集群。我的问题是,coredns pod 总是处于 CrashLoopBackOff 状态,过了一段时间它们又回到运行状态,因为什么也没发生。我发现但无法尝试的一个解决方案是将默认内存限制从 170Mi 更改为某些内容更高。由于我不是这方面的专家,我认为这不是一件难事,但我不知道如何更改正在运行的 pod 的配置。这可能是不可能的,但必须有一种方法可以使用新配置重新创建它们。我尝试了 kubectl 补丁,也查找了滚动更新,但我就是想不通。如何更改限制?

这是 pod 数据的相关部分:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    cni.projectcalico.org/podIP: 176.16.0.12/32
  creationTimestamp: 2018-11-18T10:29:53Z
  generateName: coredns-78fcdf6894-
  labels:
    k8s-app: kube-dns
    pod-template-hash: "3497892450"
  name: coredns-78fcdf6894-gnlqw
  namespace: kube-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: coredns-78fcdf6894
    uid: e3349719-eb1c-11e8-9000-080027bbdf83
  resourceVersion: "73564"
  selfLink: /api/v1/namespaces/kube-system/pods/coredns-78fcdf6894-gnlqw
  uid: e34930db-eb1c-11e8-9000-080027bbdf83
spec:
  containers:
  - args:
    - -conf
    - /etc/coredns/Corefile
  image: k8s.gcr.io/coredns:1.1.3
  imagePullPolicy: IfNotPresent
  livenessProbe:
    failureThreshold: 5
    httpGet:
      path: /health
      port: 8080
      scheme: HTTP
    initialDelaySeconds: …
Run Code Online (Sandbox Code Playgroud)

kubernetes coredns kubernetes-pod

7
推荐指数
1
解决办法
5405
查看次数

如何在Kubernetes中修补ConfigMap

Kubernetes附带一个ConfigMap名为coredns可以让你指定的DNS设置。我想通过添加以下内容来修改或修补此配置的一小部分:

apiVersion: v1
kind: ConfigMap
data:
  upstreamNameservers: |
    ["1.1.1.1", "1.0.0.1"]
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用kubectrl edit来编辑coredns ConfigMap上面的文件,该文件仅包含我要插入或更新的设置,并且可以将其合并到现有文件之上或在现有文件上打补丁ConfigMap吗?

原因是我希望使用CI / CD可重复进行部署。因此,即使我在全新的Kubernetes集群上运行了Helm图表,也将应用上面的设置。

patch kubernetes coredns configmap

7
推荐指数
3
解决办法
5407
查看次数

在 Kubernetes 集群上刷新 CoreDNS 缓存

如何在 kubernetes 集群上刷新 CoreDNS 缓存?

我知道可以通过删除 CoreDNS pod 来完成,但是是否有适当的方法来刷新缓存?

dns core-file kubernetes kube-dns coredns

7
推荐指数
2
解决办法
5880
查看次数

Kubernetes DNS 间歇性失败,kube-dns 服务和 CoreDNS pod 似乎正常

我们有一个由 kops 管理的 1 个主节点和 3 个节点的 Kubernetes 集群,用于我们的应用程序部署。我们有最少的 pod 到 pod 连接,但喜欢 Kubernetes 中的自动缩放功能。过去几个月我们一直在使用它,但最近开始出现问题,即我们的 pod 随机无法连接到我们的 redis 或数据库,并出现如下错误:

Set state pending error: dial tcp: lookup redis.id.0001.use1.cache.amazonaws.com on 100.64.0.10:53: read udp 100.126.88.186:35730->100.64.0.10:53: i/o timeout
Run Code Online (Sandbox Code Playgroud)

或者

OperationalError: (psycopg2.OperationalError) could not translate host name “postgres.id.us-east-1.rds.amazonaws.com” to address: Temporary failure in name resolution
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这只会在某些时候发生,然后当重新创建一个 pod 时,它会再次工作,不久之后它就会被绊倒。

我们尝试遵循 Kube 的所有 kube-dns 调试说明但无济于事,尝试了无数解决方案,例如更改 ndots 配置,甚至尝试迁移到 CoreDNS,但仍然存在完全相同的间歇性问题。我们使用 Calico 进行网络连接,但很难说它是否发生在网络级别,因为我们没有看到任何其他服务的问题。

有没有人知道在哪里可以找到可能导致这种行为的原因,或者如果您在自己之前经历过这种行为,请分享您是如何解决它的?

谢谢

CoreDNS 的 pods 看起来不错

?  kubectl get pods --namespace=kube-system
NAME                                                    READY     STATUS    RESTARTS   AGE
... …
Run Code Online (Sandbox Code Playgroud)

kubernetes kube-dns coredns

7
推荐指数
1
解决办法
2158
查看次数

Kubernetes pod 将 coredns 中的外部 kafka 主机名解析为 pod 内的主机别名

我有 Spring Boot 应用程序,application.property我们在其中指定了以下属性。kafka 安装在带有自签名证书的远程机器上(在 kubernete 集群之外)。

camel.component.kafka.configuration.brokers=kafka-worker1.abc.com:9092,kafka-worker2.abc.com:9092,kafka-worker3.abc.com:9092
Run Code Online (Sandbox Code Playgroud)

在应用程序启动时,它会尝试寻找 kafka 代理。现在,如果我将主机别名添加到部署中,它将像下面一样正常工作

  hostAliases:
  - ip: 10.76.XX.XX
    hostnames:
    - kafka-worker1.abc.com
  - ip: 10.76.XX.XX
    hostnames:
    - kafka-worker2.abc.com
  - ip: 10.76.XX.XX
    hostnames:
    - kafka-worker3.abc.com
Run Code Online (Sandbox Code Playgroud)

它会正常工作,但我不希望这是拥有主机别名的不好做法,如果 IP 更改,我们可能需要重新启动 pod。我们希望主机名解析发生在 coredns 上,或者在不将 ip 添加到 pod 的主机文件的情况下进行解析。

如何实现这一目标。遵循此无法从 kubernetes pod服务端点内部连接到外部数据库,如下所示为 kafka-worker2 和 kafka-worker3 使用各自的 IP 创建

    kind: Service
    apiVersion: v1
    metadata:
     name: kafka-worker1
    spec:
     clusterIP: None
     ports:
     - port: 9092
       targetPort: 9092
     externalIPs:
       - 10.76.XX.XX
Run Code Online (Sandbox Code Playgroud)

并将其添加到属性文件中

camel.component.kafka.configuration.brokers=kafka-worker1.default:9092,kafka-worker2.default:9092,kafka-worker3.default:9092
Run Code Online (Sandbox Code Playgroud)

仍然收到同样的警告

2020-05-13T11:57:12.004+0000 Etc/UTC docker-desktop …
Run Code Online (Sandbox Code Playgroud)

apache-kafka docker kubernetes kube-dns coredns

7
推荐指数
1
解决办法
1302
查看次数

如何配置 kubernetes 从托管在同一集群中/内部的注册表中提取容器镜像

我试图让我的 kubernetes 集群从内部运行的容器注册表服务中拉取。我有 kube dns 设置,我有一个注册表部署和服务正在运行。我可以通过节点上的主机命令解析服务内部名称。我已经--dns使用 kube dns 服务的地址向 docker 守护进程添加了标志。我的 kubelet 运行时也将--cluster-dns标志设置为相同的地址。然而,不知何故,这就是我尝试使用此注册表创建 pod 时得到的结果。

Failed to pull image "kube-registry.kube-system.svc.cluster.local/myuser/myimage": rpc error: code = Unknown desc = Error response from daemon: Get https://kube-registry.kube-system.svc.cluster.local/v1/_ping: dial tcp: lookup kube-registry.kube-system.svc.cluster.local: no such host

不知何故,即使 kube dns 地址明确提供给 dockerd 和 kubelet,由于名称解析,从注册表服务中提取图像也会失败。我错过了什么?

networking kubernetes docker-registry kube-dns coredns

6
推荐指数
1
解决办法
1110
查看次数

Kubernetes coredns 就绪探测失败

我设置了一个 Kubernetes 集群,其中包含 1 个主节点 (kube-master) 和 2 个从节点(kube-node-01 和 kube-node-02)

一切都运行良好......现在在 debianstretch->buster 升级之后,我的 coredns podCrashLoopBackOff由于某种原因失败了。

我做了一个kubectl describe,错误是Readiness probe failed: HTTP probe failed with statuscode: 503

Readiness url 对我来说看起来很可疑http-get http://:8080/health delay=0s timeout=1s period=10s #success=1 #failure=3......没有主机名!?那是对的吗?

Liveness属性也没有主机名。

所有虚拟机均可相互 ping 通。

有任何想法吗?

kubernetes coredns

6
推荐指数
1
解决办法
1万
查看次数