이 페이지에는 Anthos 비공개 모드와 관련된 알려진 문제와 함께 이러한 문제를 방지하거나 복구하는 방법이 나와 있습니다.
관리자 클러스터를 만드는 도중 waiting for node update jobs
상태에서 멈춤
관리자 클러스터를 만드는 데 일반적으로 30분 정도 걸립니다. 클러스터가 오랜 시간 '노드 업데이트 작업 대기 중' 단계에서 중단되면 Ctrl + C
를 사용하여 프로세스를 종료할 수 있습니다. 설치의 마지막 단계입니다.
이 프로세스를 종료해도 설치에는 영향을 미치지 않습니다.
사용자 클러스터 만들기가 중단됨
사용자 클러스터를 만들려면 일반적으로 10~30분 정도 걸립니다. 클러스터 진행 중 중단된 것으로 보이면 아래 명령어를 사용하여 클러스터 만들기 진행 상태를 확인할 수 있습니다.
kubectl get pods -n cluster-USER_CLUSTER --kubeconfig=ADMIN_KUBECONFIG
kubectl get Cluster -n cluster-USER_CLUSTER -o yaml --kubeconfig=ADMIN_KUBECONFIG
여러 제어 영역 노드로 관리자 클러스터 업그레이드 시 중단됨
관리자 클러스터 업그레이드가 제어 영역 노드 업그레이드에서 중단될 수 있습니다.
업그레이드 명령어는 Waiting for upgrade to complete... Upgrading <control plane node IP>
에 유지됩니다.
다음 조건이 모두 구성된 경우라면 이 문제는 관리자 클러스터에만 영향을 미칩니다.
구성된 비공개 레지스트리는 비공개 인증 기관에서 서명한 인증서를 사용합니다.
관리자 클러스터는 여러 제어 영역 노드로 구성됩니다. 예를 들어 고가용성으로 구성된 경우입니다.
제어 영역 노드에
docker
가 설치되어 있습니다.
이 문제는 잘못된 위치에서 레지스트리 인증 기관 파일을 가져오려고 시도하는 잘못된 구성으로 인해 발생합니다. 이 문제를 해결하려면 각 노드에 인증 기관 파일을 수동으로 배포해야 합니다. 예를 들어 관리 워크스테이션에서 다음 스크립트를 실행합니다.
#!/bin/bash
# Docker login to generate the $HOME/.docker/config.json file
docker login REGISTRY_HOST
# List the IP addresses for all the control plane nodes, separated by whitespace.
IPs=( NODE_IPS_SEPARATED_BY_SPACE )
for ip in "${IPs[@]}"; do
# Copy the docker config over to the nodes.
scp $HOME/.docker/config.json USER_NAME@${ip}:docker-config.json
# Fix the image pull credentials issue
ssh USER_NAME@${ip} "sudo mkdir -p /root/.docker && sudo cp docker-config.json /root/.docker/config.json"
# Fix the cert issue, only needed for private registry with self-signed certs.
ssh USER_NAME@${ip} "sudo mkdir -p /etc/docker/certs.d && sudo cp -r /etc/containerd/certs.d/REGISTRY_HOST /etc/docker/certs.d/"
done
USER_NAME 및 REGISTRY_HOST를 관리자 클러스터 구성에 구성된 값으로 바꿉니다.
400 비공개 IP 액세스 승인 오류
Open ID Connect(OIDC) 인증을 설정한 후에도 IP 주소를 사용하여 관리 센터에 액세스하는 경우 승인 페이지로 리디렉션되고 비공개 IP 액세스 승인 관련 오류가 발생합니다. 예를 들면 다음과 같습니다.
플랫폼에 액세스하기 위해 IP 대신 구성된 도메인 이름을 사용하여 actl platform management-center describe
를 실행하여 전체 주소를 검색합니다. 리디렉션 콜백의 경우 도메인이 필요합니다. 도메인은 비공개 주소를 가리킬 수 있습니다.
초기 플랫폼 관리자 생성 시 500 Http 실패 응답
클러스터에 OIDC 프로필을 적용할 때 프로필의 사용자 이름 또는 그룹 프리픽스에 '/' 문자가 있으면 제출을 클릭한 후 500 Http 실패 응답을 받을 수 있습니다.
이 문제를 해결하려면 프로필을 삭제하고 사용자 이름과 그룹 프리픽스에 '/' 문자가 없는 새 프로필을 만든 후 새 프로필을 클러스터에 적용해 보세요.
RBAC: 액세스 거부됨
플랫폼 관리자 계정으로 로그인한 후 RBAC: access denied
메시지가 표시되는 경우 OIDC 설정에서 오류가 발생한 것일 수 있습니다. 인증 구성 재설정을 참조하세요.
레지스트리 미러 구성을 사용할 때 비공개 레지스트리에서 이미지 사용
클러스터가 레지스트리 미러 구성을 사용하여 설정된 경우 비공개 레지스트리에서 직접 이미지를 사용할 때 이미지 경로를 기록합니다.
예를 들어 미러 구성을 사용하여 관리자 클러스터를 만든 경우는 다음과 같습니다.
registryMirrors:
- endpoint: https://10.200.0.2/v2/library
docker push 10.200.0.2/library/test-image:test-tag
가 이미지를 비공개 레지스트리에 업로드합니다. 배포 또는 Pod를 만들 때 이미지 10.200.0.2/library/test-image:test-tag
를 있는 그대로 사용할 수 없습니다. 이는 노드의 containerd 구성(/etc/containerd/config.toml
)이 10.200.0.2/library
에서 가져온 모든 이미지를 미러링하도록 구성되어 있기 때문입니다. 그러면 containerd는 10.200.0.2/library/library/test-image:test-tag
에서 이미지를 가져오려고 시도합니다.
이 문제를 해결하려면 다음 단계 중 하나를 시도하세요.
docker push 10.200.0.2/library/library/test-image:test-tag
엔드포인트 아래의 이미지 푸시- 이미지 경로
10.200.0.2/test-image:test-tag
사용
OIDC가 설정되어 있으면 관리 센터를 0.8에서 0.9로 업그레이드할 수 없음
OIDC가 설정된 경우 관리 센터를 0.8에서 0.9로 업그레이드하면 다음 오류 메시지와 함께 실패합니다.
level=fatal msg="Unable to initialize options: unable to resolve management center cluster: The given \"management center\" cluster \"admin-admin@admin\" does not appear to be a valid management center cluster. Did you choose the right cluster?\nunable to list DomainIDPMapping objects: the server could not find the requested resource"
이 문제를 해결하려면 DomainIDPMapping CRD를 사용하여 파일을 만듭니다.
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.4.0
creationTimestamp: null
name: domainidpmappings.managementcenter.anthos.cloud.google.com
spec:
group: managementcenter.anthos.cloud.google.com
names:
kind: DomainIDPMapping
listKind: DomainIDPMappingList
plural: domainidpmappings
singular: domainidpmapping
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: DomainIDPMapping is the Schema for the domainidpmappings API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: DomainIDPMappingSpec is the struct that contains the mapping
from the domain to the authentication method name specified in the AIS
ClientConfig.
properties:
authMethodName:
description: AuthMethodName is the name of the authentication method
configured in the AIS ClientConfig.
type: string
domainName:
description: DomainName is the domain used to serve the Anthos web
endpoints. The domain should not include the protocol such as http
or https. Wild cards are not supported in the domain name.
type: string
required:
- authMethodName
- domainName
type: object
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
CRD를 적용합니다.
kubectl --kubeconfig=ADMIN_KUBECONFIG apply -f domainIDPMappingCRD.yaml
EnvoyFilter 및 oauth2-proxy 네임스페이스를 삭제합니다.
kubectl --kubeconfig=ADMIN_KUBECONFIG delete envoyfilter istio-ingressgateway -n istio-system
kubectl --kubeconfig=ADMIN_KUBECONFIG delete namespace oauth2-proxy
프리픽스 anthos-log-forwarder가 있는 pod의 이미지를 가져오는 중에 오류 발생
클러스터를 설치할 때 --private-registry
가 사용 설정된 경우 anthos-log-forwarder 경로에서 initContainer가 사용하는 이미지 경로를 --private-registry
에 지정된 경로로 덮어쓰지 않습니다. 이 작업은 관리자 클러스터에서만 수행됩니다.
예를 들어 관리자 클러스터에서 다음 오류가 관찰되는 경우가 있습니다.
kubectl -n kube-system get pods --selector=app=anthos-log-forwarder
anthos-log-forwarder-2n96b 0/1 Init:ErrImagePull 0 16s
anthos-log-forwarder-8fxm8 0/1 Init:ErrImagePull 0 16s
anthos-log-forwarder-bh7rb 0/1 Init:ImagePullBackOff 0 16s
이 문제는 --private-registry
가 설정된 관리자 클러스터만 영향을 받으며 다음 출시 버전에서는 해결될 예정입니다.
Pod 연결 실패 및 역방향 경로 필터링
Anthos 비공개 모드는 노드 역방향 경로 필터링을 구성하여 소스 유효성 검사(net.ipv4.conf.all.rp_filter=0
)를 사용 중지합니다. rp_filter
설정이 1
또는 2
로 변경되면 노드 외부 통신 제한 시간으로 인해 포드가 실패합니다.
역방향 경로 필터링은 IPv4 구성 폴더(net/ipv4/conf/all
)의 rp_filter
파일로 설정됩니다. 이 값은 /etc/sysctl.d/60-gce-network-security.conf
와 같은 네트워크 보안 구성 파일에 역방향 경로 필터링 설정을 저장하는 sysctl
로 재정의될 수도 있습니다.
포드 연결을 복원하려면 net.ipv4.conf.all.rp_filter
를 다시 0
으로 수동 설정하거나 anetd
포드를 다시 시작하여 net.ipv4.conf.all.rp_filter
를 0
으로 다시 설정합니다. anetd
포드를 다시 시작하려면 다음 명령어를 사용하여 anetd
포드를 찾아 삭제하면 새 anetd
포드가 그 위치에서 시작됩니다.
kubectl get pods -n kube-system
kubectl delete pods -n kube-system ANETD_XYZ
ANETD_XYZ를 anetd
Pod의 이름으로 바꿉니다.
업그레이드 후 머신 페이지에 머신이 나열되지 않음
anthos-cluster-operator
pod를 다시 시작합니다.
kubectl --kubeconfig ADMIN_KUBECONFIG delete pods -l control-plane=anthos-cluster-operator -n kube-system
업그레이드 후 사용자 클러스터를 수정할 수 없음
anthos-cluster-operator
pod를 다시 시작합니다.
kubectl --kubeconfig ADMIN_KUBECONFIG delete pods -l control-plane=anthos-cluster-operator -n kube-system