åé¡ãæåºããŠããã ãããããšãããããŸãïŒ ãã¿ã³ãæŒãåã«ããããã®è³ªåã«çããŠãã ããã
ãã°ã¬ããŒã
kubeadmããŒãžã§ã³ïŒ kubeadm version
ïŒïŒ
{
"clientVersion": {
"major": "1",
"minor": "11",
"gitVersion": "v1.11.2",
"gitCommit": "bb9ffb1654d4a729bb4cec18ff088eacc153c239",
"gitTreeState": "clean",
"buildDate": "2018-08-07T23:14:39Z",
"goVersion": "go1.10.3",
"compiler": "gc",
"platform": "linux/amd64"
}
}
ç°å¢ïŒ
kubectl version
ïŒïŒ{
"clientVersion": {
"major": "1",
"minor": "11",
"gitVersion": "v1.11.2",
"gitCommit": "bb9ffb1654d4a729bb4cec18ff088eacc153c239",
"gitTreeState": "clean",
"buildDate": "2018-08-07T23:17:28Z",
"goVersion": "go1.10.3",
"compiler": "gc",
"platform": "linux/amd64"
},
"serverVersion": {
"major": "1",
"minor": "11",
"gitVersion": "v1.11.2",
"gitCommit": "bb9ffb1654d4a729bb4cec18ff088eacc153c239",
"gitTreeState": "clean",
"buildDate": "2018-08-07T23:08:19Z",
"goVersion": "go1.10.3",
"compiler": "gc",
"platform": "linux/amd64"
}
}
uname -a
ïŒïŒ$ kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/coredns-78fcdf6894-bvtcg 1/1 Running 2 3h
kube-system pod/coredns-78fcdf6894-lq7st 1/1 Running 2 3h
kube-system pod/etcd-k8s-master 1/1 Running 1 3h
kube-system pod/kube-apiserver-k8s-master 1/1 Running 1 3h
kube-system pod/kube-controller-manager-k8s-master 1/1 Running 1 3h
kube-system pod/kube-flannel-ds-6tgqf 1/1 Running 2 3h
kube-system pod/kube-flannel-ds-cn4ql 1/1 Running 1 3h
kube-system pod/kube-proxy-cjlvz 1/1 Running 1 3h
kube-system pod/kube-proxy-w7ts7 1/1 Running 1 3h
kube-system pod/kube-scheduler-k8s-master 1/1 Running 1 3h
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/kube-flannel-ds 2 2 2 2 2 beta.kubernetes.io/arch=amd64 3h
kube-system daemonset.apps/kube-proxy 2 2 2 2 2 beta.kubernetes.io/arch=amd64 3h
NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/coredns 2 2 2 2 3h
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/coredns-78fcdf6894 2 2 2 3h
ããããå¥ã®ããããã«ãŒã«ã§ããããã«ãµãŒãã¹ãäœæããŸããããååã解決ãããŸããã
ããããžã®å®è¡ïŒ
# cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
kube-dnsãããã©ã«ãã§ãã£ãå€ãã€ã³ã¹ããŒã«ã§ã¯ããkube-dnsããšããååã®IP10.96.0.10ã®ãµãŒãã¹ãèŠããŠããŸãã ãã®ã€ã³ã¹ããŒã«ã«ã¯ãã®ãããªãµãŒãã¹ã¯ãããŸããã
curl my-service
curl: (6) Could not resolve host: my-service
curl my-service.default.svc.cluster.local
curl: (6) Could not resolve host: my-service.default.svc.cluster.local
curl www.google.com
curl: (6) Could not resolve host: www.google.com
DNSã«ãã¯ã¢ããã¯è§£æ±ºããå¿ èŠããããŸã
kubeadmãšflannelã䜿çšããæ°èŠã€ã³ã¹ããŒã«ã1ã€ã®ããŒããšãã¹ã¿ãŒãããŒããšããŠãæ©èœããCentOS7ã
ããããšãµãŒãã¹ãäœæãããããå
ã§ããããã«ãŒã«ãããŠã¿ãŠãã ããã
/etc/resolv.confïŒ10.96.0.10ïŒå ã«è¡šç€ºãããIPã¢ãã¬ã¹ã¯ãkube-dnsã®å Žåãšåãã§ãããä»åã¯10.96.0.10ã«ã¯äœã衚瀺ãããŸããã
$ kubectl logs -f --namespace=kube-system coredns-78fcdf6894-bvtcg
.:53
CoreDNS-1.1.3
linux/amd64, go1.10.1, b0fd575c
2018/08/14 15:34:06 [INFO] CoreDNS-1.1.3
2018/08/14 15:34:06 [INFO] linux/amd64, go1.10.1, b0fd575c
2018/08/14 15:34:06 [INFO] plugin/reload: Running configuration MD5 = 2a066f12ec80aeb2b92740dd74c17138
^C
$ kubectl logs -f --namespace=kube-system coredns-78fcdf6894-lq7st
.:53
2018/08/14 15:34:06 [INFO] CoreDNS-1.1.3
2018/08/14 15:34:06 [INFO] linux/amd64, go1.10.1, b0fd575c
2018/08/14 15:34:06 [INFO] plugin/reload: Running configuration MD5 = 2a066f12ec80aeb2b92740dd74c17138
CoreDNS-1.1.3
linux/amd64, go1.10.1, b0fd575c
äœããã®çç±ã§ãã¯ã©ã¹ã¿ãŒã«kube-dns
ãµãŒãã¹ã¯ãããŸããã
æåã«ãããæäœæ¥ã§åäœæããŠåé¡ãä¿®æ£ããå¿
èŠããããŸãã 次ã«ããããã©ã®ããã«æ¶ããããç解ããããšãè©Šã¿ãããšãã§ããŸãã
ãã®yamlã䜿çšããŠã kubectl apply -f
..ã§ãµãŒãã¹ãäœæã§ããŸãã
apiVersion: v1
kind: Service
metadata:
name: kube-dns
namespace: kube-system
annotations:
prometheus.io/port: "9153"
prometheus.io/scrape: "true"
labels:
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
kubernetes.io/name: "CoreDNS"
spec:
selector:
k8s-app: kube-dns
clusterIP: 10.96.0.10
ports:
- name: dns
port: 53
protocol: UDP
- name: dns-tcp
port: 53
protocol: TCP
泚ïŒCoreDNSãµãŒãã¹åã®ååããkube-dnsãã®ãŸãŸã§ããããšã¯çŽæã«åããŸãããcorednsãããïŒã»ã¬ã¯ã¿ãŒã©ãã«ãkube-dnsãã䜿çšïŒã¯éžæãããŸãã
OPãšåãåé¡ãçºçããŠããã説æãšãŠãŒã¹ã±ãŒã¹ã¯ã»ãŒåãã§ããCentos7.5ã§ã¯kubeadm
ã§ã1ã€ã®ãã¹ã¿ãŒãã¯ãŒã«ãŒããŒããšããŠãåäœããŠããŸãã ç§ã¯åãåé¡ãæ±ããŠããããµãŒãã¹ã¯ååšããŸãïŒ
λ k get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default pod/busybox 0/1 Error 0 28m
default pod/gitlab-gitlab-fd8b9fb85-26mkz 0/1 CrashLoopBackOff 6 50m
default pod/gitlab-minio-7fb7886d94-2zsff 1/1 Running 0 50m
default pod/gitlab-postgresql-8684bb6656-ltxjm 1/1 Running 0 50m
default pod/gitlab-redis-785447c586-84x4c 1/1 Running 0 50m
default pod/ldap-79bb8c66b9-68v9f 1/1 Running 0 2d
default pod/local-volume-provisioner-dkxm9 1/1 Running 0 2d
kube-system pod/coredns-78fcdf6894-2t8tv 1/1 Running 0 2d
kube-system pod/coredns-78fcdf6894-wvq26 1/1 Running 0 2d
kube-system pod/etcd-server1.stitches.tech 1/1 Running 0 2d
kube-system pod/kube-apiserver-server1.domain 1/1 Running 0 2d
kube-system pod/kube-controller-manager-server1.domain 1/1 Running 0 2d
kube-system pod/kube-flannel-ds-m9cz5 1/1 Running 0 2d
kube-system pod/kube-proxy-qhr8p 1/1 Running 0 2d
kube-system pod/kube-scheduler-server1.domain 1/1 Running 0 2d
kube-system pod/kubernetes-dashboard-6948bdb78-qnp4b 1/1 Running 0 2d
kube-system pod/tiller-deploy-56c4cf647b-64w8v 1/1 Running 0 2d
metallb-system pod/controller-9c57dbd4-fqhzb 1/1 Running 0 2d
metallb-system pod/speaker-tngv7 1/1 Running 0 2d
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/gitlab-gitlab LoadBalancer 10.102.204.34 192.168.1.201 22:32208/TCP,80:32194/TCP,443:31370/TCP 50m
default service/gitlab-minio ClusterIP None <none> 9000/TCP 50m
default service/gitlab-postgresql ClusterIP 10.108.66.88 <none> 5432/TCP 50m
default service/gitlab-redis ClusterIP 10.97.59.57 <none> 6379/TCP 50m
default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d
default service/ldap-service LoadBalancer 10.101.250.10 192.168.1.200 389:32231/TCP 2d
kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 2d
kube-system service/kubernetes-dashboard NodePort 10.104.132.52 <none> 443:30924/TCP 2d
kube-system service/tiller-deploy ClusterIP 10.96.67.163 <none> 44134/TCP 2d
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
default daemonset.apps/local-volume-provisioner 1 1 1 1 1 <none> 2d
kube-system daemonset.apps/kube-flannel-ds 1 1 1 1 1 beta.kubernetes.io/arch=amd64 2d
kube-system daemonset.apps/kube-proxy 1 1 1 1 1 beta.kubernetes.io/arch=amd64 2d
metallb-system daemonset.apps/speaker 1 1 1 1 1 <none> 2d
NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
default deployment.apps/gitlab-gitlab 1 1 1 0 50m
default deployment.apps/gitlab-minio 1 1 1 1 50m
default deployment.apps/gitlab-postgresql 1 1 1 1 50m
default deployment.apps/gitlab-redis 1 1 1 1 50m
default deployment.apps/ldap 1 1 1 1 2d
kube-system deployment.apps/coredns 2 2 2 2 2d
kube-system deployment.apps/kubernetes-dashboard 1 1 1 1 2d
kube-system deployment.apps/tiller-deploy 1 1 1 1 2d
metallb-system deployment.apps/controller 1 1 1 1 2d
NAMESPACE NAME DESIRED CURRENT READY AGE
default replicaset.apps/gitlab-gitlab-fd8b9fb85 1 1 0 50m
default replicaset.apps/gitlab-minio-7fb7886d94 1 1 1 50m
default replicaset.apps/gitlab-postgresql-8684bb6656 1 1 1 50m
default replicaset.apps/gitlab-redis-785447c586 1 1 1 50m
default replicaset.apps/ldap-79bb8c66b9 1 1 1 2d
kube-system replicaset.apps/coredns-78fcdf6894 2 2 2 2d
kube-system replicaset.apps/kubernetes-dashboard-6948bdb78 1 1 1 2d
kube-system replicaset.apps/tiller-deploy-56c4cf647b 1 1 1 2d
kube-system replicaset.apps/tiller-deploy-64c9d747bd 0 0 0 2d
metallb-system replicaset.apps/controller-9c57dbd4 1 1 1 2d
CoreDNSãããããã¯ãå€ã®äžçãæ€çŽ¢ã§ããªãããã§ããããã¯å¥åŠã«æããŸãã
root on server1 at 11:45:48 AM in /internal/gitlab
λ k exec -it coredns-78fcdf6894-2t8tv /bin/sh -n kube-system
/ # cat /etc/resolv.conf
nameserver 192.168.1.254
nameserver 2600:1700:c540:64c0::1
search attlocal.net domain
/ # host gitlab
;; connection timed out; no servers could be reached
/ # host google.com
;; connection timed out; no servers could be reached
ç§ã«ãšã£ãŠãããã¯CoreDNSããããã¢ããã¹ããªãŒã ããŒã ãµãŒããŒïŒãã¹ããããã¯ãŒã¯ã®IPã§ãã192.168.1.254ïŒãèªèã§ããªãããšãæå³ããŸãã ç§ã¯æ£ããæ¹åã«é²ãã§ããŸããïŒ
ããããããã«å¥åŠãªããšã«ããã®ãã¹ã¿ãŒããŒãã§å®è¡ãããŠãããããã¯ãã®IPã¢ãã¬ã¹ã«åé¡ãªãå°éã§ããŸãã
λ kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools
If you don't see a command prompt, try pressing enter.
dnstools# ping 192.168.1.254
PING 192.168.1.254 (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: seq=0 ttl=63 time=1.102 ms
dig
è©ŠããŠã¿ãŸãããïŒ
dig google.com @192.168.1.254
ãŸããéåžžãæå¹ãªipv6æ§æãæã€ã·ã¹ãã ã¯ãæåã«ãã®ipv6ãªãŸã«ããŒã§è§£æ±ºãè©Šã¿ãŸãã ããã倱æããå Žåããããã®ã·ã¹ãã ã¯ããã倱æãšåŒã³ãŸãã ãããæ©èœããå Žåã¯ãæåã«digã³ãã³ãã確èªããŠãã ãããã·ã¹ãã ããã¥ã¢ã«ã¹ã¿ãã¯ipv4ipv6ã§æ§æãããŠãããã©ããã確èªããŸãã
ä»æ¥ããã®åé¡ã®èšºæã«å€ãã®æéãè²»ãããŠããã@mauilionã«æ¹ããŠæè¬ããŸãã
ç§ã®è§£æ±ºçã¯ïŒä»ã®ãšããããªãã²ã©ãã§ããïŒããã¹ãOSã§firewalld
ãµãŒãã¹ãç¡å¹ã«ããããš
sudo systemctl stop firewalld
sudo systemctl disable firewalld
ãã®ã³ãã³ããå®éã«äœãããŠããã®ããèŠããŠãããŠãã ããã ãèªèº«ã®è²¬ä»»ã§è¡ã£ãŠãã ããã
iptablesã䜿çšããããã«æ§æãããkube-proxyã䜿çšããŠkubeadmãä»ããŠCentOS7VMã«ãããã€ãããkubernetes1.11.2ãšflannel0.10.0ã§åãåé¡ãçºçããŸããã ç§ãæ°ä»ããã®ã¯ãæåã®å±éåŸããããéãŸãã¯ãããééä¿¡ããªãã£ãããšã§ãã iptablesã®FORWARDãã§ãŒã³ãèŠããšãkube-proxyã¯ãæåã®ã«ãŒã«ãšããŠKUBE-FORWARDãã§ãŒã³ãèšå®ããŸããããã¯ãæ€æ»æã«ãäžèšã®ãã¹ãŠã®ãã©ãã£ãã¯ãåŠçããå¿ èŠããããŸãã Flannelã¯ãCentOS 7FORWARDãã§ãŒã³ã®ããã©ã«ãã§ããDROPã«ãŒã«ãšREJECTã«ãŒã«ã®åŸã«2ã€ã®ã«ãŒã«ãè¿œå ããŸããã REJECTã«ãŒã«ãåé€ãããšãFlannelã«ãã£ãŠè¿œå ãããã«ãŒã«ããã©ãã£ãã¯ãåŠçããããããä»ã®ãããããµãŒãã¹IPãšéä¿¡ã§ããããšã«æ°ä»ããŸããã
kube-proxyã¯KUBE-FORWARDã®å€æŽãç£èŠããå€æŽãé²ããããNEWã®ctstateãè¿œå ããKUBE-FORWARDã«ãŒã«ã®åŸã«2ã€ã®ã«ãŒã«ãè¿œå ããŸããã ãããã®ã«ãŒã«ãè¿œå ãããšãå éšãã©ãã£ãã¯ã¯æåŸ ã©ããã«åŠçãããŸãã
/var/lib/kubelet/config.yaml
ã®clusterDNS
å€æ°ã確èªããŠãã ããã ç§ãã¡ã®æ§æã§ã¯ãããã¯ïŒèª€ã£ãŠïŒ 10.96.0.10
ã«èšå®ãããŠããŸãããã 10.244.240.10
ã§ããå¿
èŠããããŸããïŒãããã¯ã©ã¹ã¿ãŒãããŒãã¹ãã©ãããããã®ã§ãïŒã ãããå€æŽããŠkubeletãåèµ·åãããšãåé¡ãä¿®æ£ãããŸããã ãã ãããã€ã¬ãŒãžã¯ç°ãªãå ŽåããããŸãã
@ pkeuter ã10.244.0.0 / 16ã¯ããã©ã³ãã«ã®ããã©ã«ãã®_pod_cidrã§ãã ãã®å Žåã 10.244.240.10
ã¯ãããIPã«ãªããŸããããã¯ãcluster-dns ipèšå®ãšããŠäœ¿çšããªãã§ãã ããïŒå€æŽãããå¯èœæ§ããããè² è·åæ£ã¯è¡ãããŸããïŒã
ããã§ã¯ãªãïŒ
ã¯ã©ã¹ã¿ãŒã--pod-network-cidr=10.244.0.0/16 --service-cidr=10.244.240.0/20
ã§ããŒãã¹ãã©ããããŸããããä»ã®ãšããããã€ãã®éè€ãããããšã«ããå€æŽããå¿
èŠããããŸã:-)ããã§ã@ chrisohaverã«æè¬ããŸãïŒ
/var/lib/kubelet/config.yaml
ã®clusterDNS
å€æ°ã確èªããŠãã ããã ç§ãã¡ã®æ§æã§ã¯ãããã¯ïŒèª€ã£ãŠïŒ10.96.0.10
ã«èšå®ãããŠããŸãããã10.244.240.10
ã§ããå¿ èŠããããŸããïŒãããã¯ã©ã¹ã¿ãŒãããŒãã¹ãã©ãããããã®ã§ãïŒã ãããå€æŽããŠkubeletãåèµ·åãããšãåé¡ãä¿®æ£ãããŸããã ãã ãããã€ã¬ãŒãžã¯ç°ãªãå ŽåããããŸãã
ããã«æè¬ããŸã-ããã¯ç§ã®å éšDNSèŠæ±ã解決ãããªãã£ãçç±ã远跡ããã®ã«åœ¹ç«ã¡ãŸããã
åèãŸã§ã«ã-service-cidr = 192.168.0.0 / 16ã§kubeadmãåæåããkube-dnsãµãŒãã¹ãå€éšIPãšããŠãããæã£ãŠãããããclusterDNSå€ã192.168.0.10ã«èšå®ããå¿ èŠããããŸããã
ãŸããkubeletãåèµ·åããã ãã§ã¯äžååã§ãããããããåèµ·åããå¿ èŠããã£ãããã/ etc /resolv.confãæŽæ°ãããŸããã ãªã¯ãšã¹ããè¡ããããã®ã¯ãæåŸ ã©ããã«è§£æ±ºãããŠããŸãã
coreDNSã«ã¯ããã®åŸè§£æ±ºãããå€ãã®çŽããããåé¡ããããŸããã ãªãŒããŒããŒããããäžé£ã®åé¡ãèæ ®ããŠããããéããŸãã
1.12+ã«ç¹å®ã®åçŸãããå Žåã¯ããæ°è»œã«éããŠãã ãããã§ããã ãæ©ã察å¿ããŸãã
/var/lib/kubelet/config.yaml
ã®clusterDNS
å€æ°ã確èªããŠãã ããã ç§ãã¡ã®æ§æã§ã¯ãããã¯ïŒèª€ã£ãŠïŒ10.96.0.10
ã«èšå®ãããŠããŸãããã10.244.240.10
ã§ããå¿ èŠããããŸããïŒãããã¯ã©ã¹ã¿ãŒãããŒãã¹ãã©ãããããã®ã§ãïŒã ãããå€æŽããŠkubeletãåèµ·åãããšãåé¡ãä¿®æ£ãããŸããã ãã ãããã€ã¬ãŒãžã¯ç°ãªãå ŽåããããŸãã
çŽ æŽãããã§ãããããŠç§ã¯ã©ã®clusterDNSã¢ãã¬ã¹ãèšå®ãã¹ããcalicoã䜿çšããŸããïŒ
ç§ã¯åãããšãããŸããããåããšã©ãŒã«çŽé¢ããŸããç§ã®corednsãããã¯ãšã©ãŒç¶æ ãäžãå§ããŸãã
ç§ã¯ç§ã®ClusterDNSããããã§ãç¡åœ±é¿@justlooksãå€æŽããŸãã
+1 CentOS7ãškubeadm1.11ã§åãåé¡ã«çŽé¢
@timothysc
iptables -p FORWARD ACCEPT
è¿œå ãããšãåé¡ãä¿®æ£ãããŸãã
+1 CentOS7ãškubeadm1.12ã§åãåé¡ã«çŽé¢
åé¡ã®è§£æ±ºçãèŠã€ãããŸããã
CPUå¶éã«éããŠãããããã³ã¢DNSããŒã¢ã³ã³ã³ãããŒã©ãŒã®ãªãœãŒã¹å¶éãåé€ããŸããã ãããåèµ·åãããŠããŸããã
ãã©ã³ãã«ã®åé¡ãããããŸããããç§ã®å Žåãvagrantã«ã¯mutilãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãããããããã©ã³ãã«ããããã€ãããšãã«ã€ã³ã¿ãŒãã§ã€ã¹ãæå®ããå¿
èŠããããŸãïŒ - --iface=eth1
ãããã§ãªãå ŽåãåãDNSåé¡ãçºçããŸã...
https://github.com/kubernetes/kubernetes/issues/39701
vim https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
ã¯æ¬¡ã®ããã«å€æŽãããŸããïŒ
......
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.11.0-amd64
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=eth1
......
@pkeuterã«æè¬ã
æãåèã«ãªãã³ã¡ã³ã
/var/lib/kubelet/config.yaml
ã®clusterDNS
å€æ°ã確èªããŠãã ããã ç§ãã¡ã®æ§æã§ã¯ãããã¯ïŒèª€ã£ãŠïŒ10.96.0.10
ã«èšå®ãããŠããŸãããã10.244.240.10
ã§ããå¿ èŠããããŸããïŒãããã¯ã©ã¹ã¿ãŒãããŒãã¹ãã©ãããããã®ã§ãïŒã ãããå€æŽããŠkubeletãåèµ·åãããšãåé¡ãä¿®æ£ãããŸããã ãã ãããã€ã¬ãŒãžã¯ç°ãªãå ŽåããããŸãã