programing

서버에 연결할 수 없습니다. tcp: lookup: 해당 호스트가 없습니다.

cafebook 2023. 10. 20. 14:20
반응형

서버에 연결할 수 없습니다. tcp: lookup: 해당 호스트가 없습니다.

애플리케이션을 위한 쿠버네티스 클러스터를 구축하기 시작했습니다.클라우드 서비스는 Azure를 사용하기 때문에 AKS를 사용하여 K8s 클러스터를 구축합니다.AKs 클러스터는 Azure용 포털 인터페이스를 사용하여 생성되었습니다.노드가 하나인데, 노드에 배치할 컨테이너가 하나인 포드를 만들려고 합니다.현재 제가 꼼짝 못하고 있는 곳은 파워셸에서 AKS 클러스터에 연결하려고 합니다.제가 취한 조치는 다음과 같습니다.

az login (followed by logging in)
az account set --subscription <subscription id>
az aks get-credentials --name <cluster name> --resource-group <resource group name>
kubectl get nodes

마지막 줄을 입력하면 다음과 같은 오류가 나타납니다.서버에 연결할 수 없습니다. tcp: lookup: 해당 호스트가 없습니다.

SO 및 기타 포럼에서 발견된 몇 가지 다른 토끼 구멍도 살펴 보았지만 솔직히 클러스터를 더 복잡하게 만들기 전에 액세스할 수 있는 간단한 방법을 찾고 있습니다.

편집: 결국 작업하던 리소스를 삭제하고 새로운 버전의 AKS를 스핀업하여 현재 연결하는데 문제가 없습니다.그래도 제안은 고마워요!

현재 aks run 명령을 사용하면 앞서 게시한 @Darius의 세 가지 옵션을 확장하는 사설 클러스터에 연결할 수 있는 네 번째 옵션이 추가됩니다.

  1. AKS Run Command 기능을 사용합니다.

다음은 간단한 명령어의 일부 복사/붙여넣기와 파일이 필요한 것입니다.다음과 같이 여러 명령을 체인으로 연결할 수 있습니다.&&.

az aks command invoke \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --command "kubectl get pods -n kube-system"

az aks command invoke \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --command "kubectl apply -f deployment.yaml -n default" \
  --file deployment.yaml

만약에 당신이 A를 얻는다면.(ResourceGroupNotFound)오류, 구독도 추가해 보십시오.

az aks command invoke \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --subscription <subscription> \
  --command "kubectl get pods -n kube-system"

기본 구독을 구성할 수도 있습니다.

az account set -s <subscription>

서버에 연결할 수 없습니다. tcp: lookup: 해당 호스트가 없습니다.

개인 클러스터로 인해 오류가 발생합니다.AKS 클러스터를 생성하는 동안 Private Cluster 옵션이 활성화됩니다.이 옵션을 사용하지 않도록 설정해야 합니다.

쿠벡틀은 쿠버네티스의 통제 고객입니다.우리의 쿠버네티스 클러스터와 연결하기 위한 외부 연결 공급업체입니다.우리는 외부적으로 프라이빗 클러스터와 연결할 수 없습니다.

날 믿어요..개인 클러스터 옵션을 비활성화하고 성공을 확인하십시오.감사해요.

참고: 클러스터를 만든 후에는 이 옵션을 사용하지 않도록 설정할 수 없습니다.클러스터를 삭제하고 다시 재구성해야 합니다.

더 나은 가시성을 위해 커뮤니티 위키로 게시합니다.

OP가 제공하는 솔루션:

리소스를 삭제하고 새 버전의 AKS를 생성합니다.

자세한 내용은 문서 리소스 그룹 생성, AKS 클러스터 생성리소스 생성을 확인할 수 있습니다.

다음에 시도해 볼 가치가 있습니다.

kubectl config use-context <cluster-name>

비슷한 Github 이슈에서 제안된 것처럼.

가우라브의 대답은 그것을 거의 요약합니다.사실 당신은 다음과 같은 문서를 참조할 수 있습니다.

API 서버 끝점에 공용 IP 주소가 없습니다.API 서버를 관리하려면 AKS 클러스터의 VNet(Azure Virtual Network)에 액세스할 수 있는 VM을 사용해야 합니다.개인 클러스터에 대한 네트워크 연결을 설정하는 몇 가지 옵션이 있습니다.

개인 클러스터에 연결하려면 다음 세 가지 방법만 있습니다.

  • AKS 클러스터와 동일한 VNet(Azure Virtual Network)에 VM을 생성합니다.
  • 별도의 네트워크에서 VM을 사용하고 가상 네트워크 피어링을 설정합니다.이 옵션에 대한 자세한 내용은 아래 섹션을 참조하십시오.
  • Express Route 또는 VPN 연결을 사용합니다.

데스크톱 파워셸의 Az 모듈을 사용하면 Azure portal과 함께 관리 작업을 수행할 때 더욱 편리합니다.마이크로소프트는 AKS 및 서비스 패브릭 클러스터를 관리하기 위한 새로운 cmdlet을 많이 추가했습니다.

에이즈 악스 한 번 봐주세요.

사용자의 경우:

Connect-AzAccount

Get-AzAksNodePool

또한 문제가 발생했습니다. 개인 클러스터를 사용하고 있으며 피어링이 활성화된 다른 vnet에 시스템(베이스션)이 있지만 클러스터를 연결할 수 없습니다(시스템에 SSH 및 텔넷을 연결할 수 있었습니다).

그런 다음 bastion host가 있는 vnet에 대한 전용 DNS 영역에 가상 네트워크 링크를 추가했습니다.효과가 있었고, 클러스터에 접근할 수 있었습니다.

개인 클러스터를 사용하는 경우 kubernetes api-endpoint는 클러스터의 VNet에서만 액세스할 수 있습니다.애저 프라이빗 DNS를 VPN 클라이언트를 통해 사용할 수 없기 때문에 VPN을 통해 연결하는 것은 유감스럽게도 쉽게 작동하지 않습니다.

하지만 api-endpoint의 IP-address에 kubectl을 직접 연결하는 것은 가능하지만, IP를 직접 사용하고 있기 때문에 인증서 오류를 무시해야 합니다.

편집할 경우.kube/config서버 주소를 IP 번호로 변경합니다.요.kubectl이런 식으로

kubectl get all --all-namespaces --insecure-skip-tls-verify

아래와 같이 쿼리에 "--admin"을 추가하면 됩니다.

az aks get-credentials --name <cluster name> --resource-group <resource group name> --admin

일반적으로 연결하는 데 필요한 것은 이것뿐입니다.방화벽이 트래픽을 차단하지 않는지 확인합니다.또한 구독 ID 및 기타 식별자를 다시 확인하고 올바른 값을 사용하고 있는지 확인합니다.여전히 문제가 지속된다면 azure 지원부에 도움을 요청하는 것이 좋습니다.

젠킨스의 쿠벡틀 명령을 실행할 때도 같은 문제가 있었습니다.제게 있어서는 그것은 허가 문제였습니다.~/.kube/config젠킨스에게도 접근할 수 있게 해주어서 문제를 해결해주었습니다.

뛸 수 있습니다kubectl개인 AKS 클러스터의 명령사용az aks command invoke. 자세한 내용은 를 참조하십시오.

사설 AKS 클러스터를 실행하려는 이유에 대해서는 이 을 읽으십시오.

쿠버네티스 클러스터를 다시 시작한 후에도 이를 눌렀지만, 10분 정도 후에 "쿠벡트럴" 명령이 다시 작동하기 시작했습니다.

AWS를 kops와 함께 사용하는 경우 도움이 될 수 있습니다.

mkdir autoscaler
cd autoscaler/
git clone https://github.com/kubernetes/autoscaler.git

내용을 사용하여 ig-policy.json이라는 파일을 만듭니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "autoscaling:DescribeAutoScalingGroups",
                "autoscaling:DescribeAutoScalingInstances",
                "autoscaling:DescribeLaunchConfigurations",
                "autoscaling:SetDesiredCapacity",
                "autoscaling:TerminateInstanceInAutoScalingGroup"
            ],
            "Resource": "*"
        }
    ]
}

그런 다음 iam 정책을 만들어야 합니다.

aws iam create-policy --policy-name ig-policy --policy-document file://ig-policy.json

그리고 위의 createiam 정책을 user id와 함께 클러스터 이름에 첨부합니다.

aws iam attach-role-policy --policy-arn arn:aws:iam::005935423478650:policy/ig-policy --role-name nodes.testing.k8s.local

그런 다음 클러스터를 업데이트합니다.

kops update cluster testing.k8s.local --yes

그다음달리기

kops rolling-update cluster

쉽지 않은 사적인 여행을 만드는 것이지만, 경치가 아름답기 때문에 누구나 그곳에 갈 수 있기를 바랍니다.모든 작업을 테라폼으로 수행했기 때문에 포털/애저 CLI에서 수행하는 이름과 약간 다를 수 있습니다.

그리고 내가 한 방법은 이렇습니다.

  1. DNS :privatelink.westeurope.azmk8s.io
  2. 될 VNET: )vnet-access)
  3. AKS에 액세스할 가상 네트워크
  4. 사설AKS(private_dns_zone_id를 dns zone form first point로 설정)
  5. 가상 네트워크 링크(개인 DNS 영역, 지점 3에서 VNET을 가리킴)
  6. 2번 지점과 3번 지점에서 네트워크 사이를 들여다보는 중입니다.

이것은 모든 기계가 안으로 들어갈 수 있어야 합니다.vnet-access먼저 DNS를 확인한 다음 클러스터에 액세스할 수 있습니다.

하지만... 로컬 기계에서 거기까지 가고 싶다면, 이건 또 다른 설정입니다.다행히도 마이크로소프트는 이런 튜토리얼을 가지고 있습니다.


만약 무언가가 여전히 작동하지 않는 것을 발견한다면, 오류를 댓글로 달아주시면 제가 이 문제를 다룰 수 있도록 제 답변을 조정하겠습니다.

저는 새로운 Linux 사용자를 AWS의 Elastic Kubernetes Cluster에 연결하려고 할 때 이 문제가 발생했습니다.

jenkins-user라는 새로운 사용자를 설정한 다음 아래 명령을 실행하여 포드를 가져오려고 했습니다.

kubectl get pods

그러면 아래와 같은 오류가 발생합니다.

서버에 연결할 수 없습니다. 198.74.83.506:53에서 tcp: lookup 23343445ADFEHGROGMFDFMG.sk1.eu-east-2.eks.amazonaws.com 으로 전화하십시오. 해당 호스트가 없습니다.

제가 해결한 방법은 다음과 같습니다.

문제는 새로운 linux 사용자의 kube config 파일에서 kubernetes 클러스터의 컨텍스트를 설정하지 않았기 때문입니다.jenkins-user).

제가 해야 할 일은 먼저 설치하는 것이었습니다.aws-cli이 새 사용자의 경우(이 새 사용자의 홈 디렉토리에 설치).그 다음 명령을 실행합니다.aws configure필요한 자격 증명을 구성합니다.하지만 리눅스 시스템에서 다른 사용자들을 위해 이미 aws-cli 설정을 했기 때문에 그냥 복사를 했습니다.~/.aws디렉토리를 이미 존재하는 사용자에서jenkins-user홈 디렉토리(home directory)에 다음 명령을 사용합니다.

sudo cp -R /home/existing-user/.aws/ /home/jenkins-user/

다음으로, 나는 새로운 Kubernetes 구성을 위한 컨텍스트를 만들어야 했습니다.~/.kube/config을 신청하다jenkins-user다음 명령을 사용합니다.

aws eks --region my-aws-region update-kubeconfig --name my-cluster-name

다음 명령을 사용하여 kube config 파일을 확인하여 컨텍스트가 추가되었는지 확인했습니다.

sudo nano /.kube/config

이번에는 아래 명령을 실행했을 때 성공했습니다.

kubectl get pods

리소스:Amazon EKS용 kube 구성 만들기

동일한 문제에 직면하여 삭제하여 해결하였습니다..kube다음 경로 아래에 있던 폴더C:\Users\<your_username>그리고 쿠버네티스 클러스터를 다시 시작합니다.

많은 시간을 보낸 후에 이것이 내부 버그일 수도 있다는 것을 알게 되었습니다.

아래 명령으로 실행했는데 작동합니다.

az aks get-credentials --resource-group resource-group-name --name aks-cluster-name

언급URL : https://stackoverflow.com/questions/63622336/unable-to-connect-to-the-server-dial-tcp-lookup-server-location-no-such-hos

반응형