kubectl에서The connection to the server[IP]:[PORT]was refused가 될 때 처리

4739 단어 kubectlkubernetes
TL;DR
  • kubectl get pods에서 제목 오류가 반환된 경우 연결 대상 지정 오류
  • kubectl config viewclusters > cluster > server를 통해 지정된 접속 대상을 확인할 수 있음
  • kubectl config set-cluster [cluster-name] --server=https://[IP]:[PORT]를 통해 연결 목적지 지정 다시 쓰기
  • 발생한 사건
    local로 docker-for-mac를 이용하여 Kubernetes를 실행하였으나, 알아차렸을 때 kubectl get nodes 다음 오류가 발생했습니다.
    $ kubectl get nodes
    The connection to the server localhost:6443 was refused - did you specify the right host or port?
    
    kubectl describe nodes에서도 서버에 접속할 수 없는 오류가 발생해 원인을 한동안 알 수 없었다.
    $ kubectl describe nodes
    Unable to connect to the server: EOF
    
    까닭
    config에서 지정한 그룹의 연결 주소가 잘못되었습니다.
    $ kubectl config view
    apiVersion: v1
    clusters:
    - cluster:
        insecure-skip-tls-verify: true
        server: https://localhost:6443
      name: docker-for-desktop-cluster
    
    어느 시기에 localhost로 바꾼 것 같습니다.
    해결책
    다음과 같은 방법으로 해결하다.
  • 접속할 IP 주소 및 포트 번호 조사
  • 다시 쓰기 config
  • 접속해야 하는 IP 주소 및 포트 번호에 대한 조사
    다행히도 로컬 환경이기 때문에 수중에 이동하는 Docker 컨테이너에 대한 정보를 얻을 수 있다.우선, Kubbernetes의 시스템 container가 볼 수 있도록 합니다.이 작업은 GUI에서 수행할 수 있습니다.

    맨 아래쪽Show system containers (acvanced)을 선택하세요.
    그런 다음 Docker가 대기 중인 포트를 검색합니다.이번 시행docker ps --no-trunc은 컨테이너COMMAND를 확인하는 방법으로 진행됐다.실행 후 대량의 텍스트가 토출되기 때문에 대상kube-apiserver 명령의 매개 변수--advertise-address를 찾을 수 있습니다.
    $ docker ps --no-trunc | grep 'advertise-address='
    (lots of texts)
    
    솔직히 찾기 어려워서 출력 결과에 대해 검색 기능을 사용하는 것이 비교적 쉽다고 생각합니다.다음 문자열을 찾습니다.의 오른쪽 문자열(IP 주소 및 포트 번호)은 환경에 따라 다릅니다.
    --advertise-address=192.168.65.3 
    --secure-port=6443
    
    다시 쓰기 config
    다음 명령으로 다시 쓰십시오.
    $ kubectl config set-cluster docker-for-desktop-cluster \
    --server=https://[IPADDR]:[PORT]
    
    docker-for-desktop-cluster 사용하고자 하는 그룹 이름을 입력하십시오.방금 조사한 값으로 [IPADDR]과 [PORT]를 덮어쓰십시오.
    확인kubectl get pods에서 확인할 수 있습니다.아래의 정보가 돌아온 경우.
    $ kubectl get pods
    No resources found.
    
    이건 그냥 포드가 없어서 정상이야.제대로 설정되지 않으면 시작의 오류 메시지가 돌아오고 아무리 기다려도 돌아오지 않는다.
    참고 자료
  • The connection to the server :6443 was refused - did you specify the right host or port? - General Discussions - Discuss Kubernetes
  • [kubectl] The connection to the server localhost: 80808080 was refused 욕 - DRY의 메모
  • Hello Minikube - Kubernetes
  • Running Kubernetes Locally via Docker - kubectl get nodes returns The connection to the server localhost:8080 was refused - did you specify the right host or port? · Issue #23726 · kubernetes/kubernetes
  • Kubernetes "did you specify the right host or port?" - Qiita
  • "Kubernetes is starting…" state never ends · Issue #2990 · docker/for-mac
  • Kubernetes does not complete startup, "Kubernetes is starting" · Issue #1649 · docker/for-win
  • Docker for Mac에서 Kubernetes에서 디버그-Qiita로 설치
  • 좋은 웹페이지 즐겨찾기