问题标签 [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.
dns - 如何为集群外的查询公开 kube-dns 服务?
我正在尝试公开“kube-dns”服务,以便在 Kubernetes 集群之外进行查询。为了做到这一点,我编辑了“服务”定义,将“类型”从“ClusterIP”更改为“NodePort”,这似乎工作正常。
但是,当我尝试在节点端口上查询时,我能够获得 TCP 会话(使用 Telnet 测试),但似乎无法从 DNS 服务器获得任何响应(使用 dig 测试)。
我查看了“kube-dns”Pod 上每个容器的日志,但看不到任何不愉快的地方。此外,从集群内(从正在运行的容器)查询 DNS 似乎没有任何问题。
有没有人尝试过暴露 kube-dns 服务?如果是这样,是否有任何额外的设置步骤或者您对我有任何调试建议?
服务定义如下:
proxy - KUBE_SERVICE 在 iptables 中插入 REJECT 规则
我在 4 centos 7 盒子上运行 kubernetes,master 和 minions。我也安装了法兰绒和skydns。flannel 覆盖 ip 是 172.17.0.0/16,我的服务集群 ip 是 10.254.0.0/16。我在 k8 集群上运行大三角帆吊舱。我看到的是大三角帆服务无法找到对方。每个 pod 从 172.17 切片中获取一个 ip,我可以使用该 ip 从任何节点对 pod 执行 ping 操作。然而,服务本身使用集群 ip 并且无法相互通信。由于 Kube-proxy 应该转发此流量,因此我查看了 iptable 规则,我看到了:
似乎 kube-proxy 无法转发。我在 kube-proxy 启动时没有错误:
我错过了什么?
docker - Docker 上的 Kubernetes 创建具有空服务帐户且没有令牌的容器,导致容器崩溃并重新启动
仍然遇到类似的问题 1.3.0 和 1.4.0-alpha.0
就我而言(基于 docker 的设置),trusty 或 kubedns 都会从 api 服务器获得未经授权。
奇怪的是,我发现这些秘密不在实例内部,在路径 /var/run/secrets/kubernetes.io/serviceaccount 下
虽然它们似乎在节点和代理实例中
- 删除秘密并删除 pod 然后重新创建它们没有效果
- 卸载和删除文件夹后重新启动集群也没有效果
这自然会导致 kubedns 无法启动。在下面登录
kubernetes - 使用 skydns-rc.yaml.base 文件创建 kubedns 容器失败
我使用 skydns-rc.yaml.base(/kubernetes-release-1.3/cluster/addons/dns/sky..) 文件来创建 k8s dns 服务。但 kubedns 容器总是无法创建。
进行了以下替换:
namespace: kube-system
取而代之namespace: default
__PILLAR__DNS__REPLICAS__
取而代之1
__PILLAR__DNS__DOMAIN__
取而代之cluster.local
__PILLAR__FEDERATIONS__DOMAIN__MAP__
已删除
编辑后的元素信息和整个文件如下所示:
以上信息有问题吗?
其他信息:
kubernetes - 使用 skydns-rc.yaml.base 模板文件创建 kubedns 容器失败
我使用 skydns-rc.yaml.base(/kubernetes-release-1.3/cluster/addons/dns/sky..) 文件来创建 k8s dns 服务。但 kubedns 容器总是无法创建。
编辑后的元素信息显示如下:
命名空间:kube-system 替换为 默认
PILLAR__DNS__REPLICAS 替换为 1
--domain=PILLAR__DNS__DOMAIN。 替换为 --domain=cluster.local
PILLAR__FEDERATIONS__DOMAIN__MAP 已删除
整个 skydns-rc.yaml.base 模板文件如下所示:
其他信息:
集群服务 ip 范围是 10.254.0.0/16
域是 cluster.local
命名空间是默认的
执行语句kubectl describe pod kube-dns-v18结果如下所示
kubernetes - DNS 插件 Kubernetes CentOS 7 集群
我一直在努力让 DNS 插件在 CentOS 7.2 集群上运行。我使用此处的说明安装了集群:http: //severalnines.com/blog/installing-kubernetes-cluster-minions-centos7-manage-pods-services
在此配置中,master 正在运行:etcd、kube-scheduler、kube-apiserver 和 kube-controller-manager。节点正在运行:docker、kubelet 和 kube-proxy 和 flanneld。集群在此配置中运行良好。豆荚,服务都在工作。下一步是尝试启用 DNS。
注意: 此集群不使用证书进行身份验证。
有几个关于如何做到这一点的“指南”,但它们似乎都不适用于这种类型的集群。
首先,请您帮我解决一些困惑。dns 插件容器在哪里运行?
- 他们必须在Master上运行吗?
- 它们可以像集群上的任何其他 pod 一样部署吗?
这是我到目前为止所尝试的:
Kubernetes 版本:从 yum 安装香草。
在下面的 sky-dns.yaml 文件中,我已将模板变量替换为 1 个副本集,将 DNS_DOMAIN 设置为“cluster.local”。根据 StackOverflow 上的一些建议,我向“/kube-dns”容器“--kube-master-url= http://10.2.1.245:8080 ”添加了一个命令行。
SkyDNS-rc.yaml(指向 kube-dns v18)
在每个节点(主节点和 3 个小节点)上,我更新了 /etc/kubernetes/conf 文件,在末尾添加了 DSN 部分(为完整起见,发布了完整文件)。
如果我使用上面的复制控制器,是否需要添加这些?
/etc/kubernetes/conf
这是我在部署 KubeDNS 时看到的。
日志:
containers - Kubernetes 中的端点抖动
我的 Kubernetes 集群中的服务无法访问。当我检查端点不可用于服务时。在进一步检查时,我发现端点在某个值和空值之间不断变化。正如其他帖子中所建议的那样,我检查了标签选择器。豆荚起来了。容器正在侦听服务的目标端口。这里还有什么。
进一步更新。kube-controller-manager 日志显示以下错误。E0810 20:02:21.887677 10451 nodecontroller.go:771] 更新节点时出错:客户端:响应是无效的 json。端点可能不是有效的 etcd 集群端点。
kubernetes - Kubernetes PetSet DNS 不工作
我有一个名称 ==elasticsearch
和 serviceName ==的 Kubernetes PetSet es
。它确实创建了 pod,并且正如预期的那样,它们的名称类似于elasticsearch-0
和elasticsearch-1
。但是,DNS 似乎无法正常工作。elasticsearch-0.es
不解决(也不解决elasticsearch-0.default
,等等)。如果您查看生成的 srv 记录,它们似乎是随机的而不是可预测的:
有人有想法么?
细节
这是实际的 PetSet 和服务定义:
kubernetes - kube-dns does not work
I've created cluster(Centos 7) and deploy rc with kube-dns. Cluster works fine but kube-dns prints error in log.
apiserver: ### # kubernetes system config # # The following values are used to configure the kube-apiserver #
master config file:
Does anybody know what happen?)
dns - 如何从 kubernetes 节点的角度将服务名称解析为 IP?
我有一个在 GCE 上运行的 kubernetes 集群。
我创建了一个设置,其中有 2 个pod glusterfs-server-1
,glusterfs-server-2
这是我的 gluster 服务器。
2glusterfsd
守护进程正确通信,我能够创建复制卷、向其中写入文件并看到文件在两个 pod 上正确复制。
我还调用了 1 个服务glusterfs-server
来自动平衡我的 2 个 glusterfs pod 之间的流量。
从另一个 pod 内部,我可以发出mount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume
并且一切正常。
现在,我真正想要的是glusterfs
在创建容器时能够在我的 .yaml 文件中使用卷类型:
...truncated...
spec:
volumes:
- name: myvolume
glusterfs:
endpoints: glusterfs-server
path: myvolume
...truncated...
不幸的是,这不起作用。我能够找出为什么它不起作用:
直接连接到 kubernetes节点时,发出 amount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume
不起作用,这是因为从我的节点的角度来看glusterfs-server
,它不会解析为任何 IP 地址。(即不getent hosts glusterfs-server
返回任何内容)
而且,由于 glusterfs 的工作方式,即使直接使用服务的 IP 也会失败,因为 glusterfs 最终仍会尝试解析名称glusterfs-server
(并失败)。
现在,只是为了好玩并验证这是问题所在,我编辑了我的节点resolv.conf
(通过放置我的 kube-dns IP 地址和搜索域),以便它能够正确解析我的 pod 和服务 IP 地址。然后我终于能够mount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume
在节点上成功发布。然后我还能够使用 glusterfs 卷(使用上面的 PodSpec)创建一个 pod。
现在,我相当肯定修改我的节点resolv.conf
是一个糟糕的主意:kubernetes 具有命名空间的概念,如果 2 个不同命名空间中的 2 个服务共享相同的名称(例如 glusterfs-service),agetent hosts glusterfs-service
将解析为 2 个不同的 IP 2个不同的命名空间。
所以我的问题是:
我可以做些什么让我的节点能够解析我的 Pod/服务 IP 地址?