我正在运行Kubernetes 1.11,并尝试配置Kubernetes集群以首先检查本地名称服务器。我阅读了Kubernetes网站上有关自定义CoreDNS的说明,并使用仪表板为CoreDNS编辑了系统ConfigMap。得到的corefile值为:
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream 192.168.1.3 209.18.47.61
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
reload
}
Run Code Online (Sandbox Code Playgroud)
您可以将本地地址视为第一个上游名称服务器。我的问题是,这似乎没有产生任何影响。我有一个运行ping&nslookup的容器,它们都无法解析本地名称服务器中的名称。
我暂时通过在一些需要的Pod规范中指定名称服务器配置来解决此问题,但我不喜欢这种解决方法。
如何强制CoreDNS根据更改后的ConfigMap更新?我可以看到它是kube-system名称空间中的Deployment,但是我还没有找到有关如何重新加载它或以其他方式响应已更改的配置的文档。
我正在尝试运行一个3节点的Kubernetes集群。我已经建立了集群并充分运行,以使服务在不同的节点上运行。不幸的是,我似乎无法使基于NodePort的服务正常工作(因为我仍然理解正确性……)。我的问题是,我定义的任何NodePort服务仅在运行其pod的节点上可以在外部使用,而我的理解是,它们在群集中的任何节点上都可以在外部使用。
一个示例是本地Jira服务,该服务应在端口8082(内部)和外部32760上运行。这是服务定义(仅是服务部分):
apiVersion: v1
kind: Service
metadata:
name: jira
namespace: wittlesouth
spec:
ports:
- port: 8082
selector:
app: jira
type: NodePort
Run Code Online (Sandbox Code Playgroud)
这是kubectl get service --namespace wittle south的输出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jenkins NodePort 10.100.119.22 <none> 8081:31377/TCP 3d
jira NodePort 10.105.148.66 <none> 8082:32760/TCP 9h
ws-mysql ExternalName <none> mysql.default.svc.cluster.local 3306/TCP 1d
Run Code Online (Sandbox Code Playgroud)
此服务的容器的主机端口设置为8082。群集中的三个节点为nuc1,nuc2,nuc3:
Eric:~ eric$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
nuc1 Ready master 3d v1.9.2
nuc2 Ready <none> 2d v1.9.2
nuc3 Ready <none> 2d v1.9.2
Run Code Online (Sandbox Code Playgroud)
以下是尝试通过主机和节点端口访问Jira实例的结果:
Eric:~ eric$ …Run Code Online (Sandbox Code Playgroud)