2017-12-16 7 views
1

Gibt es eine Möglichkeit zu definieren, in welcher Schnittstelle Flanell sollte zuhören? Laut his documentation sollte das Hinzufügen von FLANNEL_OPTIONS = "- iface = enp0s8" in/etc/sysconfig/flanneld funktionieren, ist es aber nicht.Konfigurieren von Flanel zur Verwendung einer nicht standardmäßigen Schnittstelle in kubernetes

Mein Master-Knoten-Konfiguration wird in einem xenial läuft (ubuntu 16.04) Vagabund:

$ sudo kubeadm init --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address 10.0.0.10 

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 
clusterrole "flannel" created                  
clusterrolebinding "flannel" created                 
serviceaccount "flannel" created                 
configmap "kube-flannel-cfg" created                                      
daemonset "kube-flannel-ds" created 


[email protected]:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml 
clusterrole "flannel" configured               
clusterrolebinding "flannel" configured   

Host-IP-Adressen:

$ ip addr      
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1  
    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            
    inet6 ::1/128 scope host     
     valid_lft forever preferred_lft forever            
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000                      
    link/ether 02:63:8e:2c:ef:cd brd ff:ff:ff:ff:ff:ff          
    inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3          
     valid_lft forever preferred_lft forever            
    inet6 fe80::63:8eff:fe2c:efcd/64 scope link            
     valid_lft forever preferred_lft forever            
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000                      
    link/ether 08:00:27:fb:ad:bb brd ff:ff:ff:ff:ff:ff          
    inet 10.0.0.10/24 brd 10.0.0.255 scope global enp0s8          
     valid_lft forever preferred_lft forever            
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default                        
    link/ether 02:42:da:aa:6e:13 brd ff:ff:ff:ff:ff:ff          
    inet 172.17.0.1/16 scope global docker0 
     valid_lft forever preferred_lft forever            
5: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default                       
    link/ether 5e:07:a1:7f:97:53 brd ff:ff:ff:ff:ff:ff          
    inet 10.244.0.0/32 scope global flannel.1 
     valid_lft forever preferred_lft forever            
    inet6 fe80::5c07:a1ff:fe7f:9753/64 scope link            
     valid_lft forever preferred_lft forever            
6: cni0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000                      
    link/ether 0a:58:0a:f4:00:01 brd ff:ff:ff:ff:ff:ff          
    inet 10.244.0.1/24 scope global cni0  
     valid_lft forever preferred_lft forever            
    inet6 fe80::7037:fcff:fe41:b1fb/64 scope link            
     valid_lft forever preferred_lft forever     

Pods Namen:

$ kubectl get pods --all-namespaces                                   
NAMESPACE  NAME        READY  STATUS    RESTARTS AGE 
kube-system etcd-master      1/1  Running    0   2m 
kube-system kube-apiserver-master   1/1  Running    0   2m 
kube-system kube-controller-manager-master 1/1  Running    0   2m 
kube-system kube-dns-545bc4bfd4-gjjth  0/3  ContainerCreating 0   3m 
kube-system kube-flannel-ds-gdz8f   1/1  Running    0   1m 
kube-system kube-flannel-ds-h4fd2   1/1  Running    0   33s 
kube-system kube-flannel-ds-rnlsz   1/1  Running    1   33s 
kube-system kube-proxy-d4wv9     1/1  Running    0   33s 
kube-system kube-proxy-fdkqn     1/1  Running    0   3m 
kube-system kube-proxy-kj7tn     1/1  Running    0   33s 
kube-system kube-scheduler-master   1/1  Running    0   2m 

Flanell Protokolle:

$ kubectl logs -n kube-system kube-flannel-ds-gdz8f -c kube-flannel 
I1216 12:00:35.817207  1 main.go:474] Determining IP address of default interface 
I1216 12:00:35.822082  1 main.go:487] Using interface with name enp0s3 and address 10.0.2.15 
I1216 12:00:35.822335  1 main.go:504] Defaulting external address to interface address (10.0.2.15) 
I1216 12:00:35.909906  1 kube.go:130] Waiting 10m0s for node controller to sync 
I1216 12:00:35.909950  1 kube.go:283] Starting kube subnet manager 
I1216 12:00:36.987719  1 kube.go:137] Node controller sync successful 
I1216 12:00:37.087300  1 main.go:234] Created subnet manager: Kubernetes Subnet Manager - master 
I1216 12:00:37.087433  1 main.go:237] Installing signal handlers 
I1216 12:00:37.088836  1 main.go:352] Found network config - Backend type: vxlan 
I1216 12:00:37.089018  1 vxlan.go:119] VXLAN config: VNI=1 Port=0 GBP=false DirectRouting=false 
I1216 12:00:37.295988  1 main.go:299] Wrote subnet file to /run/flannel/subnet.env 
I1216 12:00:37.296025  1 main.go:303] Running backend. 
I1216 12:00:37.296048  1 main.go:321] Waiting for all goroutines to exit 
I1216 12:00:37.296084  1 vxlan_network.go:56] watching for new subnet leases 

Wie konfiguriere ich flanel in kubernetes in enp0s8 statt enp0s3 zu hören?

Antwort

2

ich das gleiche Problem haben, versuchen, um k8s und Vagrant zu benutzen. Ich habe diese Notiz in der documentation of flannel gefunden:

Vagrant weist typischerweise zwei Schnittstellen zu allen VMs. Der erste, für , dem alle Hosts die IP-Adresse 10.0.2.15 zugewiesen sind, ist für externen Verkehr, der NATed erhält.

Dies kann zu Problemen mit Flanell führen. Standardmäßig wählt Flanell die erste Schnittstelle auf einem Host. Dies führt dazu, dass alle Hosts denken, dass sie die gleiche öffentliche IP-Adresse haben . Um dieses Problem zu vermeiden, übergeben Sie das Flag --iface eth1 an Flanell, sodass die zweite Schnittstelle ausgewählt wird.

Also suche ich in der Podkonfiguration des Flanells. Wenn Sie die Datei kube-flannel.yml herunterladen, sollten Sie sich die DaemonSet-Spezifikation ansehen, speziell im "kube-flanell" -Container. Dort sollten Sie das erforderliche Argument "--iface = enp0s8" hinzufügen (Vergessen Sie nicht das "="). Teil des Codes, den ich benutzt habe.

containers: 
    - name: kube-flannel 
    image: quay.io/coreos/flannel:v0.10.0-amd64 
    command: 
    - /opt/bin/flanneld 
    args: 
    - --ip-masq 
    - --kube-subnet-mgr 
    - --iface=enp0s8 

laufen Dann kubectl apply -f kube-flannel.yml

Hoffnung hilft.

-1

In erster Linie nichts auf der Dokumentation Seite, die Sie verknüpft sagt /etc/sysconfig; Das ist ein sehr altes Verzeichnis, das nicht für systemd oder das kubernetes DaemonSet, das Sie tatsächlich benutzen, geeignet ist. Abgesehen davon, dass Sie etwas wie /etc/sysconfig in einem Volume einhängen, wird Ihnen das Einfügen dieses Inhalts in eine Datei auf dem Host-Dateisystem nicht helfen, wenn Sie Flanell in einem Container ausführen.

I der kürzeste Weg zum Erfolg denken ist die Befehlszeilenmarkierung in the flanneld argument list hinzufügen, die Sie leicht über kubectl --namespace=kube-system edit daemonset kube-flannel-ds tun können, aktualisieren Sie die container: Erklärung, dann kubectl --namespace=kube-system delete pod -l app=flannel

Verwandte Themen