Kubernetes에서 클러스터 피어링 연결 관리
Kubernetes에서 클러스터 피어링 연결 관리
Kubernetes 배포에서 클러스터 피어링(cluster peering) 연결을 관리하는 방법을 설명하는 문서예요. 활성 피어링 연결 목록 조회, 개별 연결 정보 읽기, 연결 삭제, 연결 재설정까지 다뤄요.
출처: 문서
본문
이 사용법 문서는 Kubernetes 배포에서 클러스터 피어링 연결을 관리하는 방법을 설명해요.
클러스터 피어링 연결을 수립한 후에는 활성 피어링 연결 목록을 가져오고, 특정 피어링 연결의 정보를 읽고, 피어링 연결을 삭제할 수 있어요.
클러스터 피어링 연결 관리에 대한 일반 지침은 클러스터 피어링으로 L7 트래픽 관리(VM)를 참고하세요.
피어링 연결 재설정 (Reset a peering connection)
클러스터 피어링 연결을 재설정하려면 PeeringAcceptor CRD를 만든 클러스터에서 새 피어링 토큰을 생성해야 해요. 새 피어링 토큰을 만들거나 설정하는 유일한 방법은 consul.hashicorp.com/peering-version 어노테이션의 값을 수동으로 조정하는 거예요. 새 토큰을 만들면 이전 토큰은 만료돼요.
PeeringAcceptorCRD에consul.hashicorp.com/peering-version어노테이션을 추가해요. 어노테이션이 이미 있다면 값을 더 높은 버전으로 업데이트해요.
acceptor.yml
apiVersion: consul.hashicorp.com/v1alpha1
kind: PeeringAcceptor
metadata:
name: cluster-02
annotations:
consul.hashicorp.com/peering-version: "1" ## The peering version you want to set, must be in quotes
spec:
peer:
secret:
name: "peering-token"
key: "data"
backend: "kubernetes"
PeeringAcceptor를 업데이트한 후 새 피어링 연결 수립 단계를 모두 반복해요.
모든 피어링 연결 나열 (List all peering connections)
Consul on Kubernetes 배포에서는 Consul CLI로 클러스터의 모든 활성 피어링 연결을 나열할 수 있어요.
- 필요하다면 CLI를 구성해 Consul 클러스터와 상호 작용하도록 해요.
consul peering listCLI 명령을 실행해요.
$ consul peering list
Name State Imported Svcs Exported Svcs Meta
cluster-02 ACTIVE 0 2 env=production
cluster-03 PENDING 0 0
피어링 연결 읽기 (Read a peering connection)
Consul on Kubernetes 배포에서는 Consul CLI로 클러스터 간 개별 피어링 연결에 대한 정보를 얻을 수 있어요.
- 필요하다면 CLI를 구성해 Consul 클러스터와 상호 작용하도록 해요.
consul peering readCLI 명령을 실행해요.
$ consul peering read -name cluster-02
Name: cluster-02
ID: 3b001063-8079-b1a6-764c-738af5a39a97
State: ACTIVE
Meta:
env=production
Peer ID: e83a315c-027e-bcb1-7c0c-a46650904a05
Peer Server Name: server.dc1.consul
Peer CA Pems: 0
Peer Server Addresses:
10.0.0.1:8300
Imported Services: 0
Exported Services: 2
Create Index: 89
Modify Index: 89
피어링 연결 삭제 (Delete peering connections)
Kubernetes 배포에서 피어링 연결을 종료하려면 PeeringAcceptor와 PeeringDialer 리소스를 모두 삭제해요.
- 두 번째 클러스터에서
PeeringDialer리소스를 삭제해요.
$ kubectl --context $CLUSTER2_CONTEXT delete --filename dialer.yaml
- 첫 번째 클러스터에서
PeeringAcceptor리소스를 삭제해요.
$ kubectl --context $CLUSTER1_CONTEXT delete --filename acceptor.yaml
cluster-01에서 피어링 연결을 삭제했는지 확인하려면 /health HTTP 엔드포인트를 쿼리해요:
- 첫 번째 클러스터의 서버 파드에 exec로 들어가요.
$ kubectl exec -it consul-server-0 --context $CLUSTER1_CONTEXT -- /bin/sh
- ACL을 활성화했다면 서비스용
/healthHTTP 엔드포인트에 접근할 ACL 토큰을 내보내요. ACL 토큰이 아직 프로비저닝되지 않았다면 부트스트랩 토큰을 사용할 수 있어요.
$ export CONSUL_HTTP_TOKEN=<INSERT BOOTSTRAP ACL TOKEN>
/healthHTTP 엔드포인트를 쿼리해요. 연결이 삭제된 피어링 서비스는 더 이상 표시되지 않아야 해요.
$ curl "localhost:8500/v1/health/connect/backend?peer=cluster-02"