Terima kasih telah mengajukan masalah! Sebelum menekan tombol, harap jawab pertanyaan-pertanyaan ini.
LAPORAN BUG
versi kubeadm (gunakan 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"
}
}
Lingkungan :
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
Saya telah membuat sebuah layanan sehingga sebuah pod dapat menggulung pod lain, tetapi namanya tidak pernah diselesaikan.
Menjalankan ke dalam pod:
# cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Dalam instalasi lama di mana kube-dns adalah defaultnya, saya ingat sebuah layanan dengan IP 10.96.0.10 dengan nama "kube-dns". Instalasi ini tidak memiliki layanan seperti itu.
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
Pencarian dns harus diselesaikan
Instal baru dengan kubeadm dan flanel, CentOS 7 dengan satu node dan master juga bertindak sebagai node.
Buat sebuah pod dan layanan, cobalah untuk menggulung pod di dalam sebuah pod.
Alamat IP yang saya lihat di dalam /etc/resolv.conf (10.96.0.10) sama dengan yang saya miliki dengan kube-dns, tetapi kali ini saya tidak melihat apa pun di 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
Untuk alasan apa pun, tidak ada layanan kube-dns
di kluster Anda.
Pertama-tama Anda harus membuatnya kembali dengan tangan untuk memperbaiki berbagai hal. Kemudian kita bisa mencoba mencari tahu bagaimana itu menghilang.
Anda dapat menggunakan yaml ini untuk membuat layanan dengan 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
Catatan: Ini berlawanan dengan intuisi bahwa nama layanan CoreDNS masih bernama "kube-dns", tetapi ia memilih pod coredns (yang menggunakan label pemilih "kube-dns ').
Saya mengalami masalah yang sama dengan OP, dan deskripsi serta kasus penggunaan hampir sama: kubeadm
di Centos 7.5 dengan satu master yang juga beroperasi sebagai node pekerja. Saya memiliki masalah yang sama dan saya layanannya ADA:
λ 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
Dari pod CoreDNS, saya tidak bisa melakukan pencarian ke dunia luar, yang tampaknya aneh:
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
Bagi saya, ini berarti pod CoreDNS tidak dapat melihat nameserver upstreamnya, yaitu 192.168.1.254, IP dari jaringan host. Apakah saya di jalur yang benar?
Tapi, yang lebih aneh lagi, adalah pod yang berjalan pada node master itu DAPAT mencapai alamat IP itu dengan baik:
λ 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
Bisakah Anda mencoba dengan dig
?
dig google.com @192.168.1.254
Juga biasanya sistem dengan konfigurasi ipv6 yang valid akan mencoba menyelesaikan dengan resolver ipv6 itu terlebih dahulu. Jika gagal, sistem ini menyebutnya kegagalan. Lihatlah perintah dig terlebih dahulu jika itu berfungsi, saya akan melihat apakah sistem dikonfigurasi dengan tumpukan ganda ipv4 ipv6 atau tidak.
Sekali lagi terima kasih kepada @mauilion karena telah menghabiskan begitu banyak waktu membantu saya mendiagnosis masalah ini hari ini!
Solusi saya (meskipun cukup mengerikan untuk saat ini) adalah menonaktifkan layanan firewalld
di OS host saya:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Ingatlah apa yang sebenarnya dilakukan oleh perintah itu. Lakukan dengan resiko Anda sendiri.
Saya mengalami masalah yang sama dengan kubernetes 1.11.2 dan flanel 0.10.0 yang di-deploy ke VM CentOS 7 melalui kubeadm dengan proxy-kube yang dikonfigurasi untuk menggunakan iptables. Apa yang saya perhatikan adalah bahwa saya tidak memiliki komunikasi pod to pod atau pod to service setelah penerapan awal. Melihat rantai FORWARD di iptables, kube-proxy menyiapkan rantai KUBE-FORWARD sebagai aturan pertama yang harus, setelah diperiksa, menangani semua lalu lintas yang saya jelaskan di atas. Flanel menambahkan dua aturan setelah aturan DROP dan REJECT yang default di rantai CentOS 7 FORWARD. Saya perhatikan ketika saya menghapus aturan TOLAK, maka aturan yang ditambahkan oleh Flanel akan memproses lalu lintas, dan pod saya dapat berkomunikasi dengan pod lain dan dengan ips layanan.
Karena kube-proxy memonitor perubahan KUBE-FORWARD dan menjaganya agar tidak berubah, saya menambahkan dua aturan setelah aturan KUBE-FORWARD yang menambahkan ctstate NEW. Setelah saya menambahkan aturan ini, lalu lintas internal akan diproses seperti yang saya harapkan.
Silakan periksa variabel clusterDNS
di /var/lib/kubelet/config.yaml
. Untuk konfigurasi kami, ini disetel (salah) ke 10.96.0.10
sedangkan seharusnya 10.244.240.10
(itulah yang kami gunakan untuk bootstrap cluster kami). Mengubah ini dan memulai ulang kubelet memperbaiki masalah bagi kami. Jarak tempuh Anda mungkin berbeda-beda.
@pkeuter , 10.244.0.0/16 adalah default _pod_ cidr untuk flanel. Jika demikian dalam kasus Anda, maka 10.244.240.10
akan menjadi IP pod, yang tidak boleh Anda gunakan sebagai pengaturan ip cluster-dns Anda (re: dapat berubah, tanpa load balancing).
Bukan itu:
Kami telah mem-bootstrap cluster dengan: --pod-network-cidr=10.244.0.0/16 --service-cidr=10.244.240.0/20
, tetapi seperti yang saya lihat sekarang ada beberapa tumpang tindih, yang harus saya ubah :-) Jadi terima kasih untuk @chrisohaver itu!
Silakan periksa variabel
clusterDNS
di/var/lib/kubelet/config.yaml
. Untuk konfigurasi kami, ini disetel (salah) ke10.96.0.10
sedangkan seharusnya10.244.240.10
(itulah yang kami gunakan untuk bootstrap cluster kami). Mengubah ini dan memulai ulang kubelet memperbaiki masalah bagi kami. Jarak tempuh Anda mungkin berbeda-beda.
Terima kasih untuk ini - ini membantu saya melacak mengapa permintaan DNS internal saya tidak terselesaikan.
Sebagai referensi, saya harus menetapkan nilai clusterDNS saya ke 192.168.0.10 saat saya memulai kubeadm dengan --service-cidr = 192.168.0.0 / 16 dan layanan kube-dns saya memilikinya sebagai IP eksternalnya.
Yang juga perlu diperhatikan, memulai ulang kubelet saja tidak cukup - saya harus me-restart pod saya sehingga /etc/resolv.conf telah diperbarui. Salah satu permintaan selesai diselesaikan seperti yang diharapkan.
Ada sejumlah masalah terkait pada coreDNS yang telah diselesaikan. Mengingat serangkaian masalah yang kelebihan beban, saya akan menutup masalah ini.
Jika ada repro tertentu di 1.12+ jangan ragu untuk membuka dan kami akan menangani secepatnya.
Silakan periksa variabel
clusterDNS
di/var/lib/kubelet/config.yaml
. Untuk konfigurasi kami, ini disetel (salah) ke10.96.0.10
sedangkan seharusnya10.244.240.10
(itulah yang kami gunakan untuk bootstrap cluster kami). Mengubah ini dan memulai ulang kubelet memperbaiki masalah bagi kami. Jarak tempuh Anda mungkin berbeda-beda.
bagus, dan saya menggunakan calico alamat clusterDNS mana yang harus saya tetapkan?
Saya melakukan hal yang sama tetapi menghadapi kesalahan yang sama pod coredns saya tidak mulai memberikan status kesalahan
Saya mengubah ClusterDNS saya tetapi masih tidak ada efek @justlooks
+1 Menghadapi masalah yang sama di CentOS 7 dan kubeadm 1.11
@tokopedia
Menambahkan iptables -p FORWARD ACCEPT
memperbaiki masalah
+1 Menghadapi masalah yang sama di CentOS 7 dan kubeadm 1.12
menemukan resolusi untuk masalah tersebut.
menghapus batas sumber daya pada pengontrol daemon dns inti karena telah mencapai batas cpu. yang membuatnya dimulai ulang.
Mungkin masalah flanel, dalam kasus saya, gelandangan memiliki antarmuka jaringan mutil, jadi harus menentukan antarmuka saat menerapkan flanel: - --iface=eth1
, jika tidak masalah dns yang sama akan terjadi ...
https://github.com/kubernetes/kubernetes/issues/39701
vim https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
dimodifikasi sebagai berikut:
......
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
......
Terima kasih @pkeuter , Ini memperbaiki masalah dan saya harus menghapus pod inti dan membiarkan mereka membuatnya kembali.
Komentar yang paling membantu
Silakan periksa variabel
clusterDNS
di/var/lib/kubelet/config.yaml
. Untuk konfigurasi kami, ini disetel (salah) ke10.96.0.10
sedangkan seharusnya10.244.240.10
(itulah yang kami gunakan untuk bootstrap cluster kami). Mengubah ini dan memulai ulang kubelet memperbaiki masalah bagi kami. Jarak tempuh Anda mungkin berbeda-beda.