有没有一种方法可以定义Flannel应该在哪个接口(interface)中监听?根据his documentation的说法,在/etc/sysconfig/flanneld中添加FLANNEL_OPTIONS =“-iface = enp0s8”应该可以,但不能。

我的主节点配置在xenial(ubuntu 16.04)流浪汉中运行:

$ 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


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

主机IP地址:
$ 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 名称:
$ 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

法兰绒日志:
$ 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

如何在kubernetes 中配置法兰绒以监听enp0s8而不是enp0s3

最佳答案

我也有同样的问题,尝试使用k8s和Vagrant。
我在documentation of flannel中找到了这个注释:



因此,我在法兰绒的pod配置中寻找它。
如果下载kube-flannel.yml文件,则应查看DaemonSet规范,尤其是“kube-flannel”容器。在那里,您应该添加必需的“--iface = enp0s8”参数(不要忘记使用“=”)。我使用过的部分代码。

  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

然后运行kubectl apply -f kube-flannel.yml
希望会有所帮助。

关于ubuntu - 配置法兰绒以在kubernetes中使用非默认接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47845739/

10-10 04:31