Calico 노드 구성을 적용하는 동안 "'노드' 리소스 적용 실패: [업데이트 충돌: 노드(...)]"를 수정하는 방법은 무엇입니까?

Calico 노드 구성을 적용하는 동안 "'노드' 리소스 적용 실패: [업데이트 충돌: 노드(...)]"를 수정하는 방법은 무엇입니까?

저는 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

kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=interface=enp0s3다음의 명령으로 Calico Slack 채널의 도움으로 해결되었습니다.https://docs.projectcalico.org/networking/ip-autoDetection

관련 정보