포드에서 클러스터 CIDR을 가져 오려면 어떻게해야합니까?
포드 내에서 클러스터 CIDR (모든 포드 IP 주소를 포함하는 IP 주소 범위)을 사용하려면 어떻게해야합니까? (자동적으로, 환경 변수, ConfigMap 또는 다른 곳에 수동으로 넣지 않고.)
내가 원하는 것의 예 :
env:
- name: CLUSTER_CIDR
valueFrom: # ??? does a configMap like this exist ??? Or any other source for clusterCidr?
configMap:
key: clusterCidr
name: ...
내 최고의 부분 솔루션 :
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: GUESSED_CLUSTER_CIDR
value: $(POD_IP)/16
key 값 어딘가에 full-cluster-state
네임 스페이스 의 configMap 내부에서 clusterCidr을 찾을 수 있습니다 . 그러나이 값은 json을 포함 하는 문자열 이며 공급 업체에 따라 다릅니다 ( ). deployment.yaml에서 일부 값을 추출 할 수 없습니다. 그리고 공급 업체 독립적 인 솔루션을 선호합니다.kube-system
full-cluster-state
currentState.rkeConfig.services.kubeController.clusterCidr
관련 문제에서 언급 된 ComponentConfig를 어디에서 찾을 수 있는지 모르겠고 아직 알파 상태인지조차 모릅니다.
관련 k8s 문제 (모두 (명확한) 수정없이 종료 됨) :
- https://github.com/kubernetes/kubernetes/issues/25533
- https://github.com/kubernetes/kubernetes/issues/46508
수동으로 클러스터의 CIDR 찾기 정보 :
- Kubernetes 클러스터의 클러스터 및 서비스 CIDR을 어떻게 찾습니까?
- 프로그래밍 방식으로 찾기 이전 : Kubernetes- 프로그래밍 방식으로 서비스 IP 범위 CIDR 찾기
- 신뢰할 수있는 프록시에 CIDR 사용, 원하는 작업 : Kubernetes : 환경에 수신 내부 IP 추가
답변
이에 대한 공급 업체 독립 솔루션 이 없습니다 . 또한 ComponentConfig
여전히 alpha feature
이므로 적절한 문서가 충분하지 않습니다.
그러나 현재 가장 좋은 방법은 (보편적이지 않더라도) 다음을 사용하는 것입니다.
$ kubectl cluster-info dump | grep -m 1 cluster-cidr
그런 다음 출력 된 ConfigMap
클러스터 CIDR
값 으로 새 값을 만든 다음 이 문서 에서와 같이 포드에서 참조 할 수 있습니다.
개념이 동일하더라도 환경에 따라 다른 접근 방식을 적용해야합니다. 불행히도 현재로서는 단일 솔루션이 없습니다.
추가 정보에 대해서는 이미 CIDR Kubeadm
과 관련 하여 약간의 비교를했습니다 Google Kubernetes Engine
. 당신은 체크 아웃 할 수있다 이 스레드를 자세한 내용은.