Activity log for bug #1956291

Date Who What changed Old value New value Message
2022-01-04 06:04:41 AnonSaber bug added bug
2022-01-04 06:06:47 AnonSaber description The advertise-address of kube-api in some nodes has obtained the cni address. For this case: $ juju run --unit kubernetes-master/0 "network-get --format yaml kube-control" bind-addresses: - mac-address: 16:fa:03:ce:ef:83 interface-name: flannel.1 addresses: - hostname: "" address: 172.31.42.0 cidr: 172.31.42.0/32 macaddress: 16:fa:03:ce:ef:83 interfacename: flannel.1 - mac-address: 52:54:00:d4:84:a7 interface-name: eth0 addresses: - hostname: "" address: 172.31.72.18 cidr: 172.31.72.0/23 - hostname: "" address: 172.31.72.4 cidr: 172.31.72.4/32 macaddress: 52:54:00:d4:84:a7 interfacename: eth0 egress-subnets: - 172.31.42.0/32 ingress-addresses: - 172.31.42.0 - 172.31.72.18 - 172.31.72.4 So these code in kubernetes_common.py will obtain the kube-control address to 172.31.42.0 ```python def get_ingress_address(endpoint_name, ignore_addresses=None): try: network_info = hookenv.network_get(endpoint_name) except NotImplementedError: network_info = {} if not network_info or "ingress-addresses" not in network_info: # if they don't have ingress-addresses they are running a juju that # doesn't support spaces, so just return the private address return hookenv.unit_get("private-address") addresses = network_info["ingress-addresses"] if ignore_addresses: hookenv.log("ingress-addresses before filtering: {}".format(addresses)) iter_filter = filter(lambda item: item not in ignore_addresses, addresses) addresses = list(iter_filter) hookenv.log("ingress-addresses after filtering: {}".format(addresses)) # Need to prefer non-fan IP addresses due to various issues, e.g. # https://bugs.launchpad.net/charm-gcp-integrator/+bug/1822997 # Fan typically likes to use IPs in the 240.0.0.0/4 block, so we'll # prioritize those last. Not technically correct, but good enough. try: sort_key = lambda a: int(a.partition(".")[0]) >= 240 # noqa: E731 addresses = sorted(addresses, key=sort_key) except Exception: hookenv.log(traceback.format_exc()) return addresses[0] ``` Maybe we need to ignore these network interfaces: lxdbr flannel cni virbr docker cali kube-ipvs The advertise-address of kube-api in some nodes has obtained the cni address. For this case: $ juju run --unit kubernetes-master/0 "network-get --format yaml kube-control" bind-addresses: - mac-address: 16:fa:03:ce:ef:83   interface-name: flannel.1   addresses:   - hostname: ""     address: 172.31.42.0     cidr: 172.31.42.0/32   macaddress: 16:fa:03:ce:ef:83   interfacename: flannel.1 - mac-address: 52:54:00:d4:84:a7   interface-name: eth0   addresses:   - hostname: ""     address: 172.31.72.18     cidr: 172.31.72.0/23   - hostname: ""     address: 172.31.72.4     cidr: 172.31.72.4/32   macaddress: 52:54:00:d4:84:a7   interfacename: eth0 egress-subnets: - 172.31.42.0/32 ingress-addresses: - 172.31.42.0 - 172.31.72.18 - 172.31.72.4 So these code in kubernetes_common.py will obtain the kube-control address to 172.31.42.0 (flannel.1) ```python def get_ingress_address(endpoint_name, ignore_addresses=None):     try:         network_info = hookenv.network_get(endpoint_name)     except NotImplementedError:         network_info = {}     if not network_info or "ingress-addresses" not in network_info:         # if they don't have ingress-addresses they are running a juju that         # doesn't support spaces, so just return the private address         return hookenv.unit_get("private-address")     addresses = network_info["ingress-addresses"]     if ignore_addresses:         hookenv.log("ingress-addresses before filtering: {}".format(addresses))         iter_filter = filter(lambda item: item not in ignore_addresses, addresses)         addresses = list(iter_filter)         hookenv.log("ingress-addresses after filtering: {}".format(addresses))     # Need to prefer non-fan IP addresses due to various issues, e.g.     # https://bugs.launchpad.net/charm-gcp-integrator/+bug/1822997     # Fan typically likes to use IPs in the 240.0.0.0/4 block, so we'll     # prioritize those last. Not technically correct, but good enough.     try:         sort_key = lambda a: int(a.partition(".")[0]) >= 240 # noqa: E731         addresses = sorted(addresses, key=sort_key)     except Exception:         hookenv.log(traceback.format_exc())     return addresses[0] ``` Obviously this is not the physical network interface (eth0) that we expected,Maybe we need to ignore these network interfaces: lxdbr flannel cni virbr docker cali kube-ipvs
2022-03-04 01:13:12 AnonSaber charm-kubernetes-master: status New Opinion
2022-03-04 01:13:23 AnonSaber charm-kubernetes-master: status Opinion New
2023-04-11 03:37:23 AnonSaber affects charm-kubernetes-master layer-kubernetes-common