설명
TKE는 2020년 9월 21일(월) 23:00 - 2020년 9월 22일(화) 06:00(UTC+8)까지 Kubeconfig 파일 전달 중단 작업을 진행할 계획입니다.
배경
현재 TKE는 기본적으로 admin token과 함께 Kubeconfig 파일을 노드에 저장합니다. 이 Kubeconfig 파일을 사용하여 사용자는 Kubernetes 클러스터에서 쉽게 작업할 수 있습니다. 그러나 사용자가 노드 로그인 권한 관리를 신중하게 수행하지 않으면 클러스터가 보안 위험에 노출될 수 있습니다. 따라서 Kubeconfig 파일 제공을 중단하기로 결정했습니다.
기존 클러스터는 Kubeconfig 파일을 사용하여 사용자 정의 스크립트에서 클러스터 초기화 작업을 진행할 수 있습니다. 이 문제를 해결하기 위해 Kueconfig 파일과 동일한 권한을 갖지만 유효 기간이 12시간인 노드 초기화용 클라이언트 인증서를 제공할 예정입니다. 인증서가 만료되면 Kubeconfig 파일이 무효화됩니다. 만료 후에도 파일이 계속 필요한 경우 문제 및 솔루션을 참고하십시오. 문제 및 솔루션
문제
다음 명령을 사용하여 TKE 클러스터 노드에 로그인하고 kubectl 작업을 진행하려고 할 때 다음 오류 메시지가 표시됩니다.
$ kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?
$ kubectl get node
error: You must be logged in to the server (Unauthorized)
솔루션
3. Kubeconfig 파일을 얻은 후 사설망 액세스를 활성화하거나 Kubernetes의 service IP 주소를 직접 사용할 수 있습니다.
사설망 액세스 활성화: 클러스터 세부 정보 페이지의 왼쪽 사이드바에서 기본 정보를 선택하고 ‘클러스터 APIServer 정보’ 섹션에서 사설망 액세스를 활성화한 다음 프롬프트에 따라 작업합니다.
Kubernetes의 service IP 주소 사용: 클러스터 세부 정보 페이지의 왼쪽 사이드바에서 서비스 및 라우팅 > Service를 선택하여 default 네임스페이스에서 Kubernetes의 service IP 주소를 가져옵니다. Kubeconfig 파일의 clusters.cluster.server 필드를 https://<IP>:443으로 교체합니다.
4. Kubeconfig 파일의 내용을 새 노드의 $HOME/.kube/config에 복사합니다.
5. Kubeconfig 클러스터에 액세스하고 kubectl get nodes를 사용하여 연결을 테스트합니다.
특수한 시나리오의 처리
특수한 시나리오
workload가 사용을 위해 host의 /root/.kube/config 또는 /home/ubuntu/.kube/config 파일을 마운트했습니다.
솔루션
Kubernetes의 serviceaccount를 올바르게 사용하여 incluster 모드에서 클러스터에 액세스합니다. 자세한 내용은 Kubernetes 공식 문서를 참고하십시오.