Activity log for bug #1897115

Date Who What changed Old value New value Message
2020-09-24 16:08:38 Nobuto Murata bug added bug
2020-09-24 16:10:57 Nobuto Murata bug added subscriber Canonical Field High
2020-09-24 20:11:23 John A Meinel summary network-get returns /32 address and units cannot talk to each other network-get starts returning flannel address instead of host nic address
2020-09-24 20:11:51 John A Meinel juju: importance Undecided High
2020-09-24 20:11:51 John A Meinel juju: status New Incomplete
2020-09-24 23:35:45 Nobuto Murata juju: status Incomplete New
2020-09-28 01:21:08 Nobuto Murata attachment added reproducer.yaml https://bugs.launchpad.net/juju/+bug/1897115/+attachment/5414828/+files/reproducer.yaml
2020-09-28 01:26:41 Nobuto Murata description juju version: 2.8.3-bionic-amd64 provider: vSphere Charmed Kubernetes deployment doesn't settle and is not usable with "waiting: Waiting to retry addon deployment" in kubernetes-master. The root cause is Juju believes that /32 addresses from an vxlan interface of flannel in kubernetes-master units are the ones other services should use instead of the "main" /26 addresses the units have. By the nature of /32 in IPv4, nobody can reach to it. kubernetes-master has the "main" and flannel/32 address: $ juju run --unit kubernetes-master/leader -- ip -br a lo UNKNOWN 127.0.0.1/8 ::1/128 ens192 UP 133.XX.XX.XX/26 fe80::XXXX:XXXX:XXXX:XXXX/64 flannel.1 UNKNOWN 10.1.75.0/32 fe80::YYYY:YYYY:YYYY:YYYY/64 network-get returns 10.1.75.0/32 which is not reachable from other units: $ juju run --unit kubernetes-master/leader -- network-get kube-api-endpoint --ingress-address 10.1.75.0 Other services such as kubeapi-loadbalancer writes the following config, then Nginx cannot reach to the backend servers. $ cat /etc/nginx/sites-enabled/apilb upstream target_service { server 10.1.75.0:6443; server 10.1.8.0:6443; } And there is no way to specify which subnet to be used explicitly because network spaces are not supported in vSphere provider as far as I'm concerned. $ juju spaces cannot list spaces: spaces not supported (not supported) ERROR cannot list spaces: spaces not supported (not supported) Here is the full output of network-get, and it doesn't contain the expected /26 address at all. $ juju run --unit kubernetes-master/leader -- network-get kube-api-endpoint bind-addresses: - macaddress: fa:73:41:53:bd:2c interfacename: flannel.1 addresses: - hostname: "" address: 10.1.75.0 cidr: 10.1.75.0/32 egress-subnets: - 10.1.75.0/32 ingress-addresses: - 10.1.75.0 FWIW, "primary-network" is already set in model-config. juju version: 2.8.3-bionic-amd64 provider: vSphere Charmed Kubernetes deployment doesn't settle and is not usable with "waiting: Waiting to retry addon deployment" in kubernetes-master. The root cause is Juju believes that /32 addresses from an vxlan interface of flannel in kubernetes-master units are the ones other services should use instead of the "main" /26 addresses the units have. By the nature of /32 in IPv4, nobody can reach to it. How to reproduce: 1. Bootstrap with local/LXD profier 2. Define a separate bridge as follows: $ lxc network create lxdbr-rfc6598 \ ipv4.address=100.64.0.1/26 \ ipv4.dhcp.ranges=100.64.0.11-100.64.0.62 \ ipv4.nat=true \ ipv6.address=none \ 3. Define a profile with it: $ lxc profile create juju-rfc6598 $ lxc profile edit juju-rfc6598 <<EOF devices: eth0: name: eth0 nictype: bridged parent: lxdbr-rfc6598 type: nic EOF 4. Create a model matching with the name of the profile: $ juju add-model rfc6598 5. Make sure the logging level is DEBUG or more, and deploy: $ juju model-config logging-config <root>=DEBUG $ juju deploy ./reproducer.yaml reproducer.yaml: https://bugs.launchpad.net/juju/+bug/1897115/+attachment/5414828/+files/reproducer.yaml kubernetes-master has the "main" and flannel/32 address: $ juju run --unit kubernetes-master/leader -- ip -br a lo UNKNOWN 127.0.0.1/8 ::1/128 ens192 UP 133.XX.XX.XX/26 fe80::XXXX:XXXX:XXXX:XXXX/64 flannel.1 UNKNOWN 10.1.75.0/32 fe80::YYYY:YYYY:YYYY:YYYY/64 network-get returns 10.1.75.0/32 which is not reachable from other units: $ juju run --unit kubernetes-master/leader -- network-get kube-api-endpoint --ingress-address 10.1.75.0 Other services such as kubeapi-loadbalancer writes the following config, then Nginx cannot reach to the backend servers. $ cat /etc/nginx/sites-enabled/apilb upstream target_service {   server 10.1.75.0:6443;   server 10.1.8.0:6443; } And there is no way to specify which subnet to be used explicitly because network spaces are not supported in vSphere provider as far as I'm concerned. $ juju spaces cannot list spaces: spaces not supported (not supported) ERROR cannot list spaces: spaces not supported (not supported) Here is the full output of network-get, and it doesn't contain the expected /26 address at all. $ juju run --unit kubernetes-master/leader -- network-get kube-api-endpoint bind-addresses: - macaddress: fa:73:41:53:bd:2c   interfacename: flannel.1   addresses:   - hostname: ""     address: 10.1.75.0     cidr: 10.1.75.0/32 egress-subnets: - 10.1.75.0/32 ingress-addresses: - 10.1.75.0 FWIW, "primary-network" is already set in model-config.
2020-09-28 01:31:50 Nobuto Murata description juju version: 2.8.3-bionic-amd64 provider: vSphere Charmed Kubernetes deployment doesn't settle and is not usable with "waiting: Waiting to retry addon deployment" in kubernetes-master. The root cause is Juju believes that /32 addresses from an vxlan interface of flannel in kubernetes-master units are the ones other services should use instead of the "main" /26 addresses the units have. By the nature of /32 in IPv4, nobody can reach to it. How to reproduce: 1. Bootstrap with local/LXD profier 2. Define a separate bridge as follows: $ lxc network create lxdbr-rfc6598 \ ipv4.address=100.64.0.1/26 \ ipv4.dhcp.ranges=100.64.0.11-100.64.0.62 \ ipv4.nat=true \ ipv6.address=none \ 3. Define a profile with it: $ lxc profile create juju-rfc6598 $ lxc profile edit juju-rfc6598 <<EOF devices: eth0: name: eth0 nictype: bridged parent: lxdbr-rfc6598 type: nic EOF 4. Create a model matching with the name of the profile: $ juju add-model rfc6598 5. Make sure the logging level is DEBUG or more, and deploy: $ juju model-config logging-config <root>=DEBUG $ juju deploy ./reproducer.yaml reproducer.yaml: https://bugs.launchpad.net/juju/+bug/1897115/+attachment/5414828/+files/reproducer.yaml kubernetes-master has the "main" and flannel/32 address: $ juju run --unit kubernetes-master/leader -- ip -br a lo UNKNOWN 127.0.0.1/8 ::1/128 ens192 UP 133.XX.XX.XX/26 fe80::XXXX:XXXX:XXXX:XXXX/64 flannel.1 UNKNOWN 10.1.75.0/32 fe80::YYYY:YYYY:YYYY:YYYY/64 network-get returns 10.1.75.0/32 which is not reachable from other units: $ juju run --unit kubernetes-master/leader -- network-get kube-api-endpoint --ingress-address 10.1.75.0 Other services such as kubeapi-loadbalancer writes the following config, then Nginx cannot reach to the backend servers. $ cat /etc/nginx/sites-enabled/apilb upstream target_service {   server 10.1.75.0:6443;   server 10.1.8.0:6443; } And there is no way to specify which subnet to be used explicitly because network spaces are not supported in vSphere provider as far as I'm concerned. $ juju spaces cannot list spaces: spaces not supported (not supported) ERROR cannot list spaces: spaces not supported (not supported) Here is the full output of network-get, and it doesn't contain the expected /26 address at all. $ juju run --unit kubernetes-master/leader -- network-get kube-api-endpoint bind-addresses: - macaddress: fa:73:41:53:bd:2c   interfacename: flannel.1   addresses:   - hostname: ""     address: 10.1.75.0     cidr: 10.1.75.0/32 egress-subnets: - 10.1.75.0/32 ingress-addresses: - 10.1.75.0 FWIW, "primary-network" is already set in model-config. juju version: 2.8.3-bionic-amd64 provider: vSphere Charmed Kubernetes deployment doesn't settle and is not usable with "waiting: Waiting to retry addon deployment" in kubernetes-master. The root cause is Juju believes that /32 addresses from an vxlan interface of flannel in kubernetes-master units are the ones other services should use instead of the "main" /26 addresses the units have. By the nature of /32 in IPv4, nobody can reach to it. How to reproduce: 1. Bootstrap with local/LXD profier 2. Define a separate bridge as follows: $ lxc network create lxdbr-rfc6598 \     ipv4.address=100.64.0.1/26 \     ipv4.dhcp.ranges=100.64.0.11-100.64.0.62 \     ipv4.nat=true \     ipv6.address=none \ 3. Define a profile with it: $ lxc profile create juju-rfc6598 $ lxc profile edit juju-rfc6598 <<EOF devices:   eth0:     name: eth0     nictype: bridged     parent: lxdbr-rfc6598     type: nic EOF 4. Create a model matching with the name of the profile: $ juju add-model rfc6598 5. Make sure the logging level is DEBUG or more, and deploy: $ juju model-config logging-config <root>=DEBUG $ juju deploy ./reproducer.yaml reproducer.yaml: https://bugs.launchpad.net/juju/+bug/1897115/+attachment/5414828/+files/reproducer.yaml 6. Once the model settles, wait for 10 or 20 minutes until "observed network config updated" event is triggered. > DEBUG juju.worker.machiner machiner.go:181 observed network config updated [Actual] The unit will have two IP addresses, one is /26 and the other is /32 on flannel.1. Juju's network-get will select /32 as the ingress-address. $ juju show-machine 0 ... network-interfaces: eth0: ip-addresses: - 100.64.0.48 mac-address: 00:16:3e:51:24:68 gateway: 100.64.0.1 is-up: true flannel.1: ip-addresses: - 10.1.27.0 mac-address: 7e:f7:e2:9a:11:b6 is-up: true $ juju run --unit kubernetes-master/0 -- ip -br a lo UNKNOWN 127.0.0.1/8 ::1/128 flannel.1 UNKNOWN 10.1.27.0/32 fe80::7cf7:e2ff:fe9a:11b6/64 eth0@if31 UP 100.64.0.48/26 fe80::216:3eff:fe51:2468/64 $ juju run --unit kubernetes-master/0 -- network-get kube-api-endpoint --ingress-address 10.1.27.0 $ juju run --unit kubernetes-master/0 -- network-get kube-api-endpoint bind-addresses: - macaddress: 7e:f7:e2:9a:11:b6 interfacename: flannel.1 addresses: - hostname: "" address: 10.1.27.0 cidr: 10.1.27.0/32 <<<<<<<<<< egress-subnets: - 10.1.27.0/32 ingress-addresses: - 10.1.27.0 [Expected] Juju will pick up /26 one instead of /32 which is not reachable from other units at all.
2020-09-28 01:43:07 Nobuto Murata bug added subscriber Canonical Field Critical
2020-09-28 01:43:12 Nobuto Murata removed subscriber Canonical Field High
2020-09-28 14:47:40 Nobuto Murata bug added subscriber Canonical Field High
2020-09-28 14:55:08 Nobuto Murata removed subscriber Canonical Field Critical
2020-09-29 14:46:13 Joseph Phillips juju: assignee Joseph Phillips (manadart)
2020-09-29 14:46:17 Joseph Phillips juju: status New In Progress
2020-10-22 13:49:17 Pen Gale juju: milestone 3.0.0
2020-10-22 13:49:24 Pen Gale juju: status In Progress Triaged
2022-10-22 02:20:16 Canonical Juju QA Bot juju: milestone 3.0.0 3.0.1
2022-11-15 09:48:31 Canonical Juju QA Bot juju: milestone 3.0.1 3.0.2
2022-11-16 09:16:14 Canonical Juju QA Bot juju: milestone 3.0.2 3.0.3
2023-02-09 03:43:22 Canonical Juju QA Bot juju: milestone 3.0.3 3.0.4