![Как исправить ошибку «Не удалось применить ресурс 'Node': [конфликт обновления: Node(...)]» при попытке применить конфигурацию узла Calico?](https://rvso.com/image/770849/%D0%9A%D0%B0%D0%BA%20%D0%B8%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D1%83%20%C2%AB%D0%9D%D0%B5%20%D1%83%D0%B4%D0%B0%D0%BB%D0%BE%D1%81%D1%8C%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%20'Node'%3A%20%5B%D0%BA%D0%BE%D0%BD%D1%84%D0%BB%D0%B8%D0%BA%D1%82%20%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%3A%20Node(...)%5D%C2%BB%20%D0%BF%D1%80%D0%B8%20%D0%BF%D0%BE%D0%BF%D1%8B%D1%82%D0%BA%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8E%20%D1%83%D0%B7%D0%BB%D0%B0%20Calico%3F.png)
Я играюсь с Kubernetes и получил две машины VirtualBox — главную и рабочую. У каждой есть два сетевых интерфейса — один для Интернета и другой для связи между друг другом VM и хост-машиной. И у меня возникли проблемы с настройкой Calico, потому что он автоматически определяет неправильный сетевой интерфейс. Я сделал несколько настроек, чтобы исправить это, но одна проблема осталась — рабочая машина получает неправильный IP. И я нашел, как это исправить — но это не работает. Подробности ниже.
Текущая конфигурация рабочего компьютера ( 10.0.3.15
это «неправильный» IP):
[12:35]user@ubuntu-vbox-k8s-master[~]$ ./calicoctl get node ubuntu-vbox-k8s-worker -o yaml
apiVersion: projectcalico.org/v3
kind: Node
metadata:
annotations:
projectcalico.org/kube-labels: '{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"ubuntu-vbox-k8s-worker","kubernetes.io/os":"linux"}'
creationTimestamp: "2021-09-26T10:59:00Z"
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/os: linux
kubernetes.io/arch: amd64
kubernetes.io/hostname: ubuntu-vbox-k8s-worker
kubernetes.io/os: linux
name: ubuntu-vbox-k8s-worker
resourceVersion: "9219"
uid: 6f5efd41-e06c-4f9d-9b3a-248af88a385e
spec:
addresses:
- address: 10.0.3.15/24
type: CalicoNodeIP
- address: 10.0.3.15
type: InternalIP
bgp:
ipv4Address: 10.0.3.15/24
ipv4IPIPTunnelAddr: 192.168.77.64
orchRefs:
- nodeName: ubuntu-vbox-k8s-worker
orchestrator: k8s
status: {}
Я пытаюсь применить исправленный вариант:
[12:37]user@ubuntu-vbox-k8s-master[~]$ cat calico-worker.yaml
apiVersion: projectcalico.org/v3
kind: Node
metadata:
annotations:
projectcalico.org/kube-labels: '{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"ubuntu-vbox-k8s-worker","kubernetes.io/os":"linux"}'
creationTimestamp: "2021-09-26T10:59:00Z"
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/os: linux
kubernetes.io/arch: amd64
kubernetes.io/hostname: ubuntu-vbox-k8s-worker
kubernetes.io/os: linux
name: ubuntu-vbox-k8s-worker
resourceVersion: "5303"
uid: 6f5efd41-e06c-4f9d-9b3a-248af88a385e
spec:
addresses:
- address: 192.168.56.109
type: InternalIP
orchRefs:
- nodeName: ubuntu-vbox-k8s-worker
orchestrator: k8s
status: {}
и получил ошибку:
[12:38]user@ubuntu-vbox-k8s-master[~]$ ./calicoctl apply -f calico-worker.yaml
Failed to apply 'Node' resource: [update conflict: Node(ubuntu-vbox-k8s-worker)]
Это странно, потому что мне удалось исправить главный узел Calico таким же образом, без конфликта с конфигурацией:
apiVersion: projectcalico.org/v3
kind: Node
metadata:
annotations:
projectcalico.org/kube-labels: '{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"ubuntu-vbox-k8s-master","kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":"","node-role.kubernetes.io/master":"","node.kubernetes.io/exclude-from-external-load-balancers":""}'
creationTimestamp: "2021-09-26T10:56:24Z"
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/os: linux
kubernetes.io/arch: amd64
kubernetes.io/hostname: ubuntu-vbox-k8s-master
kubernetes.io/os: linux
node-role.kubernetes.io/control-plane: ""
node-role.kubernetes.io/master: ""
node.kubernetes.io/exclude-from-external-load-balancers: ""
name: ubuntu-vbox-k8s-master
resourceVersion: "9052"
uid: 9e6d55c6-f449-4ded-ab47-ea9d889d6b43
spec:
addresses:
- address: 192.168.56.108
type: InternalIP
bgp:
ipv4IPIPTunnelAddr: 192.168.77.0
orchRefs:
- nodeName: ubuntu-vbox-k8s-master
orchestrator: k8s
status:
podCIDRs:
- 192.168.77.0/24
решение1
Решено с помощью канала Calico Slack по kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=interface=enp0s3
командеhttps://docs.projectcalico.org/networking/ip-autodetection