Wählen Sie einen: FEHLERBERICHT
kubeadm-Version (verwenden Sie kubeadm version
):
kubeadm version: &version.Info{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"}
Umgebung :
kubectl version
):Client Version: version.Info{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"}
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
- **Kernel** (e.g. `uname -a`):
`Linux node1-lab-a1-01 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux`
- **Others**:
Our hosts are setup using IPv4 BGP over IPv6 (rfc5549: https://tools.ietf.org/html/rfc5549).
The host ip address is attached to a loopback address and FRR bgp announces that IP to connected TOR switches (spine and leaf fabric). There is no IPv4 address on the connected interfaces, but I do have a default route that allows access to the world:
```# ip route
default proto bgp metric 20
nexthop via 169.254.0.1 dev em1 weight 1 onlink
nexthop via 169.254.0.1 dev em2 weight 1 onlink
10.101.155.0/24 proto bgp metric 20
nexthop via 169.254.0.1 dev em1 weight 1 onlink
nexthop via 169.254.0.1 dev em2 weight 1 onlink
10.101.246.0/24 dev em3 proto kernel scope link src 10.101.246.11
169.254.0.0/16 dev em3 scope link metric 1002
169.254.0.0/16 dev em1 scope link metric 1003
169.254.0.0/16 dev em2 scope link metric 1005
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
Habe ein ähnliches Problem wie #982
Laufen
# kubeadm config images pull
unable to select an IP from default routes.
# kubeadm config images pull -v 10
I1003 20:56:35.880474 87226 interface.go:360] Looking for default routes with IPv4 addresses
I1003 20:56:35.880550 87226 interface.go:365] Default route transits interface "em1"
I1003 20:56:35.881831 87226 interface.go:174] Interface em1 is up
I1003 20:56:35.881925 87226 interface.go:222] Interface "em1" has 1 addresses :[fe80::266e:96ff:fe5f:7b48/64].
I1003 20:56:35.881957 87226 interface.go:189] Checking addr fe80::266e:96ff:fe5f:7b48/64.
I1003 20:56:35.881989 87226 interface.go:202] fe80::266e:96ff:fe5f:7b48 is not an IPv4 address
I1003 20:56:35.882027 87226 interface.go:360] Looking for default routes with IPv6 addresses
I1003 20:56:35.882051 87226 interface.go:376] No active IP found by looking at default routes
unable to select an IP from default routes.
Der gleiche Fehler tritt bei kubeadm init
Ich erwarte, dass kubeadm funktioniert und die Bilder zieht oder eine Init durchführt.
Vielleicht haben Sie eine Möglichkeit, die IP-Adresse oder Schnittstelle meiner Hosts anzugeben.
@bart0sh @kad - Haben Sie ähnliche Netzwerkkonfigurationen?
@scheuk was ist die lokal auflösbare IPv4-Adresse für diesen Host?
Können Sie es zu /etc/hosts hinzufügen und in der kubeadm-Konfiguration angeben?
/cc @kubernetes/sig-network-bugs
@timothysc wissen wir, ob der API-Server mit dieser Art von Umgebung funktioniert? Ich frage mich nur, ob wir kubeadm in diesem Netzwerk-Setup zum Laufen bringen, werden wir in der Zukunft auf weitere Probleme stoßen?
Wenn Sie einen bestimmten Ethernet-Adapter haben, der die Details umschließt und an den Sie binden können, oder /etc/hosts überschreiben, würde ich denken, dass es "einfach funktionieren" sollte.
@timothysc
meine lokale Host-IP sitzt auf lo0:
# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 10.101.228.11/32 brd 10.101.228.11 scope global lo:0
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
die 10.101.228.11
IP-Adresse
Ich habe den Morgen damit verbracht, kubeadm init
Arbeit zu machen.
Ich konnte dies der Konfiguration hinzufügen und init funktionierte wie ein Zauber.
api:
advertiseAddress: 10.101.228.11
Ich stecke jedoch immer noch fest und brauche eine Route, um sowohl den kubeadm config images pull
Befehl auszuführen
sowie kubeadm token create --print-join-command
, um den Join-Befehl abzurufen, um dem Cluster Worker-Knoten hinzuzufügen.
@timothysc
Können Sie die /etc/hosts-Überschreibung erklären?
Ich habe gerade versucht, 10.101.228.11 hostname
zu /etc/hosts hinzuzufügen.
aber kubeadm schaut sich immer noch die Schnittstelle mit der Route an.
Dies hat also mit den Besonderheiten Ihrer Netzwerkkonfiguration in Verbindung mit dem Standardverhalten des Systems zu tun.
Ich bin mir ziemlich sicher, wenn Sie einen überbrückten Adapter erstellen würden, um die IPv4-Adresse an zu binden, anstatt an ein Loopback gebunden zu sein, würde es richtig erkennen.
Ich suche gerade nach, ob es eine globale Überschreibung für die Netzwerkkarte gibt, die über *.
Es wäre also eine Kombination aus --api-advertise-addresses und --hostname-override .
@scheuk könntest du laufen
kubeadm config images pull --config yourconfig.yaml
mit der Angabe Ihrer Konfigurationsdatei: advertiseAddress
Möglicherweise müssen Sie --config
für jeden Unterbefehl eingeben, b/c wie Ihr Netzwerk eingerichtet ist.
Sie können kubeadm token create --print-join-command
von jedem Host oder einer Pipeline mit dem Flag --kubeconfig
ausführen.
Eine mögliche Problemumgehung für das Pull-Ding von Bildern angesichts der Konfiguration wäre etwa:
kubeadm config images list | xargs -n1 -I {} docker pull {}
vor der Initialisierung ausführen
@timothysc @maailion
Nicht weiter --kubeconfig:
# kubeadm token create --print-join-command --kubeconfig /etc/kubernetes/admin.conf
unable to select an IP from default routes.
Auch wenn ich es mit --config versuche, sagt es, dass Sie diese beiden nicht kombinieren können:
# kubeadm token create --print-join-command --config /etc/kubernetes/kubeadm.conf
can not mix '--config' with arguments [print-join-command]
Das hat funktioniert, ich werde meine Bereitstellung aktualisieren, um dies zu tun
# kubeadm config images pull --config /etc/kubernetes/kubeadm.conf
Ich meine, dass Sie kubeadm token create
von einem Computer mit einer Standardroute wie Ihrem Laptop verwenden können, solange er Zugriff auf den laufenden Apiserver und eine Admin-Ebene kubeconfig hat
@scheuk
```
kann '--config' nicht mit Argumenten mischen [print-join-command]
```
ist ein kleiner Fehler, den wir in 1.13 beheben können
Bist du noch gesperrt?
@timothysc
Ich bin immer noch gesperrt.
Wir verwenden ansible, um all diese Schritte auszuführen, und ich führe sie derzeit aus
kubeadm token create --print-join-command
auf dem ersten Master, der den Befehl zum Verbinden der Worker-Knoten mit dem Cluster erhält. Ich kann mich jedoch möglicherweise vorübergehend entsperren, indem ich tue, was @mauilion sagt, und kubeadm lokal einrichten (wo ansible ausgeführt wird), um diese Aktion auszuführen.
Danke für die ganze Hilfe bisher!
Wir verwenden ansible, um all diese Schritte auszuführen, und ich führe sie derzeit aus
kubeadm token create --print-join-command auf dem ersten Master, um den Befehl zum Verbinden der Workerknoten mit dem Cluster abzurufen.
Die Ausgabe von init
enthält den Befehl, den Sie auf den anderen Knoten ausführen sollen.
Dies geschieht normalerweise in ansible, da das Token kurzlebig ist und es einfacher ist, die Ausgabe des Join-Befehls von Token create zu erfassen als init.
Außerdem ist es etwas schwieriger, die anderen Ausgaben und Abstände zu analysieren;)
Außerdem ist es etwas schwieriger, die anderen Ausgaben und Abstände zu analysieren;)
Ich habe in meinem Leben so viel Sed & Awk gemacht, dass ich wahrscheinlich zu desensibilisiert bin ;-)
Mein Localhost, auf dem ich kubeadm von ansible aus ausführen würde, ist also ein Mac.
Auf der kubeadm-Installationsseite wird mac os x nicht unterstützt.
docker run --net=host --rm -v /path/to/kubeconfig:/kubeconfig quay.io/mauilion/kubeadm:v1.11.3 kubeadm token create --print-join-command --kubeconfig=/kubeconfig
output:
kubeadm join 10.192.0.2:6443 --token iwikby.5u4wc05jnbdldq5e --discovery-token-ca-cert-hash sha256:f19311dfe7034d14c48002fd4f29e285270a573b9e9066735d5749ca89b9c89f
:)
@mailion duh ! Aber das ist großartig, du hast einen kubeadm-Conatiner :)
Ich habe gerade mein Ansible aktualisiert, um auszuführen:
docker run --rm -v /etc/kubernetes/admin.conf:/kubeconfig quay.io/mauilion/kubeadm:v1.11.3 kubeadm token create --print-join-command --kubeconfig=/kubeconfig 2>/dev/null
auf dem ersten Master. Lassen Sie den Container das Docker-Netzwerk anstelle des Host-Netzwerks verwenden, um mein Netzwerk-Setup zu maskieren.
nett
Bist du entsperrt @scheuk
Ja, ich bin jetzt entsperrt! Danke für die ganze Hilfe!
@bart0sh @kad - Haben Sie ähnliche Netzwerkkonfigurationen?
Wir haben nicht genau so etwas, aber ich denke, wir können einfacher, aber nahe an diesem Setup simulieren.
@scheuk können Sie Beispiele zeigen, was Sie in Ihrer IPv6-Routing-Tabelle haben und welche Art von IPv4- / IPv6-Adressen Sie auf Ihren em*-Schnittstellen haben? (Sie müssen keine echten IPs anzeigen, Sie können sie verschleiern, möchten nur sehen, welche Art von Unicast-Adressen neben Link-Local-Adressen in Ihrem Setup vorhanden sein könnten).
@kad unser Netzwerkteam ist schon ziemlich auf IPv6
hier ein Link zur Funktionsweise: https://docs.cumulusnetworks.com/display/ROH/Routing+on+the+Host
im Abschnitt BGP- und OSPF-unnummerierte Schnittstellen .
Hier ist die Ausgabe meiner IPv6-Routing-Tabelle und -Schnittstellen angehängt:
# ip -6 route
unreachable ::/96 dev lo metric 1024 error -113 pref medium
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -113 pref medium
unreachable 2002:a00::/24 dev lo metric 1024 error -113 pref medium
unreachable 2002:7f00::/24 dev lo metric 1024 error -113 pref medium
unreachable 2002:a9fe::/32 dev lo metric 1024 error -113 pref medium
unreachable 2002:ac10::/28 dev lo metric 1024 error -113 pref medium
unreachable 2002:c0a8::/32 dev lo metric 1024 error -113 pref medium
unreachable 2002:e000::/19 dev lo metric 1024 error -113 pref medium
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -113 pref medium
fe80::/64 dev fabric0 proto kernel metric 256 mtu 9000 pref medium
fe80::/64 dev em1 proto kernel metric 256 pref medium
fe80::/64 dev em2 proto kernel metric 256 pref medium
fe80::/64 dev em3 proto kernel metric 256 pref medium
fe80::/64 dev docker0 proto kernel metric 256 pref medium
# ip addr show em1
4: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 24:6e:96:5f:7b:48 brd ff:ff:ff:ff:ff:ff
inet6 fe80::266e:96ff:fe5f:7b48/64 scope link
valid_lft forever preferred_lft forever
# ip addr show em2
5: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 24:6e:96:5f:7b:4a brd ff:ff:ff:ff:ff:ff
inet6 fe80::266e:96ff:fe5f:7b4a/64 scope link
valid_lft forever preferred_lft forever
@kad unser Netzwerkteam ist schon ziemlich auf IPv6
hier ein Link zur Funktionsweise: https://docs.cumulusnetworks.com/display/ROH/Routing+on+the+Host
im Abschnitt BGP- und OSPF-unnummerierte Schnittstellen .
@scheuk danke für die Klarstellungen. Um das ganze Bild zusammenzufassen (um zu sehen, ob ich Ihr Setup vollständig verstehe):
lo
Schnittstelle eine (oder mehrere?) /32 IPv4-Adressen.lo
(ähnlich wie bei IPv4-Szenarien)Ist das korrekt ?
Wenn das oben richtig ist, können Sie eine weitere Ausgabe von ip ro get 8.8.8.8
teilen?
(Anstelle von 8.8.8.8
Sie eine beliebige Unicast-IP verwenden. Ich versuche zu verstehen, was der Kernel als ausgehende Quelladresse für die Standardroute und Routen verwendet, die Sie über ospf/bgp außerhalb Ihres Cluster-IP-Bereichs erhalten haben ).
@scheuk Sie können den Patch von #69578 ausprobieren, um zu sehen, ob er in Ihrem Setup funktioniert.
Wenn Sie Hilfe benötigen, kann ich eine erstellte Binärdatei mit diesem Patch bereitstellen.
@kad Ihr Verständnis unseres Setups ist richtig.
BGP kündigt auch andere Routen an, es ist so konfiguriert, dass es lokale Blackhole-Routen aufnimmt und ankündigt, aber das ist für POD-Konnektivität vs. Host-Konnektivität.
Hier ist die Ausgabe von ip ro get
auf dem Host:
# ip ro get 8.8.8.8
8.8.8.8 via 169.254.0.1 dev em2 src 10.101.228.11
cache
Ich werde versuchen, auch den Patch von #69578 zu testen und euch Bescheid zu geben
@kad kannst du mir eine Binärdatei schicken, könnte weniger Zeit in
@kad kannst du mir eine Binärdatei schicken, könnte weniger Zeit in
versuche es mit http://orava.kad.name/kubeadm/kubeadm-69578
Dieser kubeadm ist aus dem Master-Branch aufgebaut. aber zumindest sollte es in Ordnung sein, um es in Ihrem Setup zu versuchen.
@kad sieht gut aus:
# ./kubeadm-69578 config images pull -v 10
I1009 21:53:05.336396 47234 interface.go:384] Looking for default routes with IPv4 addresses
I1009 21:53:05.336485 47234 interface.go:389] Default route transits interface "em1"
I1009 21:53:05.337591 47234 interface.go:196] Interface em1 is up
I1009 21:53:05.337687 47234 interface.go:244] Interface "em1" has 1 addresses :[fe80::266e:96ff:fe5f:7b48/64].
I1009 21:53:05.337721 47234 interface.go:211] Checking addr fe80::266e:96ff:fe5f:7b48/64.
I1009 21:53:05.337742 47234 interface.go:224] fe80::266e:96ff:fe5f:7b48 is not an IPv4 address
I1009 21:53:05.337768 47234 interface.go:398] Default route exists for IPv4, but interface "em1" does not have unicast addresses. Checking loopback interface
I1009 21:53:05.338779 47234 interface.go:196] Interface lo is up
I1009 21:53:05.338884 47234 interface.go:244] Interface "lo" has 4 addresses :[127.0.0.1/8 10.101.228.11/32 192.0.2.1/24 ::1/128].
I1009 21:53:05.338918 47234 interface.go:211] Checking addr 127.0.0.1/8.
I1009 21:53:05.338958 47234 interface.go:221] Non-global unicast address found 127.0.0.1
I1009 21:53:05.338977 47234 interface.go:211] Checking addr 10.101.228.11/32.
I1009 21:53:05.338995 47234 interface.go:218] IP found 10.101.228.11
I1009 21:53:05.339025 47234 interface.go:250] Found valid IPv4 address 10.101.228.11 for interface "lo".
I1009 21:53:05.339044 47234 interface.go:404] Found active IP 10.101.228.11 on loopback interface
I1009 21:53:05.339186 47234 version.go:156] fetching Kubernetes version from URL: https://dl.k8s.io/release/stable-1.txt
I1009 21:53:05.687024 47234 feature_gate.go:206] feature gates: &{map[]}
gut. Also, kommentieren Sie bitte PR :)
/cc @rdodev - zu cli-arg-
zugehörige PR dafür ist in Arbeit von
https://github.com/kubernetes/kubernetes/pull/69578
/ @rdodev zuweisen
Lassen Sie uns morgen früh darüber reden.
kubeadm token create --print-join-command --config /etc/kubernetes/kubeadm.conf kann '--config' nicht mit Argumenten mischen [print-join-command]
In Sachen cli ist das @timothysc schon
Prima!
Setzen Sie einfach die IP des Masters anstelle von $ (hostname -i)
Zum Beispiel:
kubeadm init --apiserver-advertise-address 192.168.1.2
Hilfreichster Kommentar
Ich habe in meinem Leben so viel Sed & Awk gemacht, dass ich wahrscheinlich zu desensibilisiert bin ;-)