问题标签 [kube-dns]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - Kubernetes Kube-proxy 无法检索节点信息
试图理解为什么我会从我的 kube-proxy 日志中看到这个输出
集群工作正常,这是否表明集群配置有问题?
kube-dns - kube-cluster 正在运行,但没有 DNS
请原谅极端的新手......我已经在 linux 学院完成了 docker 和 kube 课程。我有一个 kube 集群主机和 3 个从 repo = http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/ kube 版本 1.5.2 在 centos7 上运行的小工具,但是当我去设置一个示例留言簿应用程序,我发现我没有 DNS。已找到有关如何测试 DNS 工作的文档,但如果不存在,似乎无法找到如何修复它。
kubernetes - Kubernetes 1.5.4 Kube DNS 被删除
当我为 Kubedns 运行部署时,它成功启动,但在正常运行 8 分钟后,它被删除。当它运行时,它可以很好地解决 dns 请求。有没有其他人经历过这个?我开始在其他随机部署中看到这一点。
Kubernetes 版本客户端版本:version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.4", GitCommit:"7243c69eb523aa4377bce883e7c0dd76b84709a1", GitTreeState:"clean", BuildDate:"2017-03-07T23: 53:09Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"} 服务器版本: version.Info{Major:"1", Minor:"5", GitVersion:"v1 .5.4", GitCommit:"7243c69eb523aa4377bce883e7c0dd76b84709a1", GitTreeState:"clean", BuildDate:"2017-03-07T23:34:32Z", GoVersion:"go1.7.4", 编译器:"gc", 平台:"linux/amd64 "}
环境:Centos 7
内核 Linux at4d-lvk8s01 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
记录消息
部署 Kubedns 后:
无法在 deployments.extensions “kube-dns”上执行操作:对象已被修改;请将您的更改应用到最新版本并重试 Apr 20 13:09:33 acme-lvk8s01 kube-controller-manager[912]: I0420 13:09:33.656784 912 event.go:217] Event(api.ObjectReference{Kind :“ReplicaSet”,命名空间:“kube-system”,名称:“kube-dns-3777016094”,UID:“98b57f0f-25ca-11e7-afbe-90b8d0f6559c”,APIVersion:“extensions”,ResourceVersion:“262627”,FieldPath :""}): type: 'Normal' reason: 'SuccessfulCreate' 创建 pod: kube-dns-3777016094-9jt36 Apr 20 13:09:33 acme-lvk8s01 kube-controller-manager[912]: I0420 13:09: 33.702938 912 deployment_controller.go:298] 同步部署 kube-system/kube-dns 时出错:无法在 deployments.extensions “kube-dns”上执行操作:对象已被修改;请将您的更改应用到最新版本并重试 Apr 20 13:10:03 acme-lvk8s01 kube-controller-manager[912]: W0420 13:10:03.960803 912 reflector.go:319] pkg/controller/garbagecollector/garbagecollector .go:768:观看结束于:401:请求索引中的事件已过时并已清除(请求的历史记录已被清除 [261724/260681])[262723]
在 Kubedns 被删除之前:
将副本集 kube-dns-3777016094 缩减为 0 Apr 20 13:17:49 acme-lvk8s01 kube-controller-manager[912]: I0420 13:17:49.600483 912 deployment_controller.go:298] 同步部署 kube-system/ 时出错kube-dns:无法在 deployments.extensions 上执行操作“kube-dns”:对象已被修改;请将您的更改应用到最新版本,然后重试 Apr 20 13:17:49 acme-lvk8s01 kube-controller-manager[912]: I0420 13:17:49.623854 912 event.go:217] Event(api.ObjectReference{Kind :“ReplicaSet”,命名空间:“kube-system”,名称:“kube-dns-3777016094”,UID:“98b57f0f-25ca-11e7-afbe-90b8d0f6559c”,APIVersion:“extensions”,ResourceVersion:“263766”,FieldPath :""}): type: 'Normal' 原因: 'SuccessfulDelete' 删除的 pod:
kubernetes - 带有端口 DNS SRV 的 Kubernetes 服务 externalName
Kubernetes 对DNS SRV 查找的支持是否允许使用externalName的服务,如果允许,如何允许 pod 访问该记录?我的用例是一个外部提供的服务,其中第三方定义了端口号,我想将其表示在与 CNAME 相同的位置,即 k8s 服务。
dnsPolicy
我已经在设置为的 pod 中使用了一个简单的 nslookup 查询ClusterFirst
,它似乎适用于内部的默认 kubernetes 服务:
但是我尝试使用我自己的一项服务,它使用externalName
了一个命名端口,但找不到它。
我正在使用 k8s 1.6.1 和 kube-dns 1.9(诚然 1.9 有点“旧”,我会尽快升级它)。
kubernetes - ContainerCreating 状态下的 kube-dns pod 使用 Weavenet,没有端点
我正在尝试设置一个赢得 Ubuntu 16.0.4 的简单集群。我按照 Kubernetes 文档使用 kubeadm 创建集群。以下是拥有的版本 -
kubectl 版本
客户端版本:version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.1", GitCommit:"b0b7a323cc5a4a2019b2e9520c21c7830b7f708e", GitTreeState:"clean", BuildDate:"2017-04-03T20:44: 38Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"} 服务器版本: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0 ", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:24:30Z", GoVersion:"go1.7.5", 编译器:"gc", 平台:"linux/amd64"}
kubeadm 版本
kubeadm 版本:version.Info{Major:"1", Minor:"6+", GitVersion:"v1.6.0-alpha.0.2074+a092d8e0f95f52", GitCommit:"a092d8e0f95f5200f7ae2cba45c75ab42da36537", GitTreeState:"clean", BuildDate:"2016 -12-13T17:03:18Z",GoVersion:"go1.7.4",编译器:"gc",平台:"linux/amd64"}
Kubelet - 1.5.6(由于节点状态 NotReady 的问题不得不从 1.6 降级)使用 weave-kube-1.6 附加组件。码头工人版本:1.12.6
即使使用 Weavenet 安装了 pod 网络,kube-dns pod 也没有处于运行状态。
kubectl 获取 pods -n kube-system
NAME READY STATUS RESTARTS AGE etcd-km 1/1 Running 5 13h kube-apiserver-km 1/1 Running 2 13h kube-controller-manager-km 1/1 Running 4 13h kube-dns-3913472980-xw6mq 0/3 ContainerCreating 0 1h kube-proxy-p3jhx 1/1 运行 1 1d kube-proxy-qd1c6 1/1 运行 3 1d kube-scheduler-km 1/1 运行 7 13h weave-net-g1fcm 2/2 运行 4 12h weave-net-t8zsb 2/2 运行 0 12h
iptables-保存
[....] -A KUBE-SERVICES -d 10.96.0.10/32 -p tcp -m comment --comment "kube-system/kube-dns:dns-tcp 没有端点" -m tcp --dport 53 -j REJECT --reject-with icmp-port-unreachable -A KUBE-SERVICES -d 10.96.0.10/32 -p udp -m comment --comment "kube-system/kube-dns:dns has no endpoints" -m udp --dport 53 -j REJECT --reject-with icmp-port-unreachable
我用 ufw stop/ufw disable 禁用了防火墙。我还尝试在 TCP 和 UDP 上打开端口 53,但没有帮助。请帮助让我的 kube-dns pod 运行。
非常感谢。
kubernetes - 如何禁用 kubernetes 中 2 个不同命名空间中的 pod 之间的交叉通信
我有 2 个命名空间和 1 个 pod,每个运行 1 个服务。
例子
我实际上可以从 namespace2 pod 向 namespace1 pod 发出 HTTP 请求。
如何禁用 2 个不同名称空间之间的通信?
node.js - ElasticSearch 服务在 Kubernetes 1.6 上的 NodeJS API 变得随机不可用
我们目前正在对 ElasticSearch 集群的特定 Kubernetes 服务 (LoadBalancer) 的问题进行故障排除,该问题似乎在客户端随机提供 ECONNRESET 变得不可用。设置如下:
- 使用 Kops 部署的 AWS 上的 Kubernetes 1.6
- Elasticsearch 2.4 集群(Fabric8 发现插件部署)。它将自己暴露为 Service / LoadBalancer
- NodeJS API部署作为客户端,使用
request
模块连接到上述Elasticsearch服务
在运行足够长的时间(不多,大约 10-15 分钟)后,不一定在大量负载下(大约每秒 1 个请求),ElasticSearch 服务似乎变得不可用,这是来自 API 端的 ECONNRESET 错误症状:
这个错误是随机发生的,不需要高负载,而不是定义的时间段。在这些 ECONNRESET 的确切时间,kube-dns
ElasticSearch 服务(和其他服务)的插件日志创建(重新创建?):
对于每个 Kubernetes 服务,这些行几乎每 5 分钟连续重复一次。如果这是正常行为或与我们观察到的故障绝对相关,我完全不知道它们的含义。
API 和 ElasticSearch 在网络上的交互基本上是一组搜索查询(最多 30/50 并行)。在交互过程中,在 ElasticSearch 端没有观察到错误日志。
这在几个月前运行良好,变化是:
- Kubernetes 使用 Kops 从版本 1.4 升级到 1.6
- 为 ElasticSearch 集群添加了 CPU / 内存限制。遵循 Elastic 建议
- 向 Elastic 添加了额外的初始 30 次调用,这些调用在第一次调用后被缓存
尝试的操作:
- 减少和增加 ElasticSearch 端的资源限制(CPU/内存)以查看行为的任何变化。对 ECONNRESET 没有影响
- 增加了 ElasticSearch 端搜索的线程池和队列大小。它处理更多负载,但问题本身在低负载下表现出来。
考虑回滚到 Kubernetes 1.4,并取消任何限制。任何指针或信息都将受到高度赞赏。
更新 1:有关服务的一些额外信息elasticsearch
:
更新 2
我现在能够通过使用官方 ElasticSearch NodeJS 客户端进行搜索查询并与服务通信来缓解这个问题。API 上的代码使用request
模块直接调用 ElasticSearch REST API。
我仍在调查这个问题,因为问题仍然存在,但似乎在使用具有以下配置的 NodeJS 客户端时它并没有表现出来:
更新 3
我们不仅通过与 Elastic 通信的 NodeJS API 观察到这种行为,还观察到与kibana-logging
Kubernetes 服务和elasticdump
:
这两个模块和原始的 NodeJS API 都使用request
NPM 模块与 ElasticSearch 进行通信。有趣的是,ElasticSearch NodeJS 客户端(https://github.com/elastic/elasticsearch-js)似乎没有使用request
.
仍在调查,但这可能最终成为 Elastic Kubernetes Service 暴露 + NodeJSrequest
模块之间的问题/不兼容
kubernetes - 如何最好地利用 Kubernetes/minikube DNS 进行本地开发
我们正在改用 Kubernetes。通过内置的 dns 访问 k8s 部署中的其他已部署服务很简单。因此,如果我有一个名为 app1 的 pod/service 和一个名为 app2 的 pod/service 并且 app1 需要调用 app2,它可以只使用“app2”,并且 k8s dns 会发挥它的魔力并且一切正常。这很好,因为我们不需要为所有环境拥有 app1_host 和 app2_host 的配置管理开销。
这也适用于本地使用 minikube。如果 app1 和 app2 部署到 minikube 中,它们可以通过服务名称(与应用名称匹配)相互引用
但是,我遇到的问题是本地开发。假设我想在本地 IDE 中处理 app1。我可以在 minikube 中启动 app2,但现在如果我想让 app1 访问 minikube 中的 app2……我不能再只使用“app2”。我必须 ping minikube/kubectl api 并获取正在运行的 IP 和端口,然后我可以在本地使用它......这使我们回到使用 HOST/PORT 类型配置 mgmt。
我们可以更新 /etc/hosts 文件并将 app2 指向 minikube IP,但我仍然需要找出外部/暴露端口是什么。
我们可以使用 config mgmt host/port 并在启动时从 minikube/k8s api 动态填充它们。这是推荐的方式吗?有什么东西已经做到了(类似于 envconsul)?
当我尝试在 IDE 中本地工作但在 minikube 或 k8s 中运行依赖服务时,是否有更好/更优雅的解决方案可以利用 k8s dns 的强大功能?
谢谢
dns - KubeDNS 不注入名称服务器,RHEL 7 上的 Kubernetes 1.5.2-
我已经为 POD 网络创建了一个带有主节点和 5 个节点的集群,并且工作正常。
不起作用的是,在安装 kubeDNS(kubedns、dnsmasq 和 sidecar)之后,我无法将新的名称服务器注入 HOST /etc/resolv.conf,因为我无法解析任何主机名。
其他一切正常,所有 KubeDNS 容器都在运行并且没有错误
我的 kube-proxy ARGS
我的 Kubelet 配置
这是我对 DNS POD 的配置:
这是我的故障排除会话:
kubernetes - Kubernetes - 无法设置 DNS
根据:https ://coreos.com/kubernetes/docs/latest/getting-started.html 安装 kubernetes 后,我无法设置 dns 插件。
Kubelet 正在运行:
但是 kube-dns 无法连接到 api-server:
来自 api 服务器的日志:
api服务器ip:
DNS服务: