쿠버네티스 클러스터의 워커 노드들은 보통 Private Subnet에 위치하여 외부에서 직접 접속이 불가능하다. 노드 자체에 문제가 생겼을 때, Bastion Host를 '점프 서버'로 삼아 내부로 진입하는 방법을 정리한다.
1-1) 인증키(PEM) 준비 및 전송
워커 노드에 접속하려면 노드 생성 시 사용한 인증키가 필요하다.
1. FileZiila 등 FTP 도구를 사용해 로컬 PC의 인증키( .pem )를 Bastion Host 의 홈 디렉토리( ~ )로 업로드한다.

2. 보안 설정: 업로드된 키 파일은 소유자만 읽을 수 있어야 SSH 접속이 허용된다.
# ex
chmod 400 ~/ssokey.pem
1-2) Bastion에서 워커 노드로 점프(Jump)
NCP 콘솔에서 확인한 워커 노드의 사설 IP(Private IP)를 이용해 접속한다.
# 실행 예시
ssh -i ~/ssokey.pem root@10.0.2.9
▶ 주의: ACG 설정에서 Bastion Host의 사설 IP 대역이 워커노드의 SSH(22번 포트) 허용 범위에 들어있어야 한다.
1-3) 워커 노드 내 kubectl 환경 설정
보통 kubectl 은 마스터 노드나 Bastion 에 실행하지만, 특정 워커 노드 내부에서 직접 상태를 확인해야 할 때가 있다.
# 1. kubeconfig 폴더 생성
mkdir -p $HOME/.kube
# 2. 관리자 설정 파일을 사용자 환경으로 복사
sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config
# 3. 파일 소유권 변경 및 권한 설정
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 4. 서비스 재시작 및 확인
systemctl restart kubelet
kubectl get nodes -o wide
1-4) [중요] 네임스페이스 권한 설정
워커 노드에서 kubectl 을 사용할 때, 특정 네임스페이스에 대한 권한이없으면 명령어가 거부될 수 있다.
· Role/ClusterRole 및 RoleBinding 설정을 통해 해당 사용자에게 적절한 권한을 부여해야 한다.
· Tip: 운영 환경에서는 보안을 위해 워커 노드에서 직접 kubectl을 사용하는 것은 최소화하고, 가급적 Bastion Host에서 통합 관리하는 것이 좋다.
1. Role 정의: "무엇을 할 수 있는가?"
먼저 default 네임스페이스 내의 모든 자원(*)에 대해 거의 모든 행위(get, list, create, delete 등)를 할 수 있는 Role을 생성한다.
▶ 실제 운영 환경에서는 verbs: ["*"] 보다는 필요한 권한(get, list 등)만 골라서 부여하는 것이 안전하다.
▶ 만약 워커 노드 하나가 해킹당하면, 공격자가 해당 노드에서 클러스터 전체의 자원을 삭제(delete)할 수도 있으므로 주의가 필요하다.
▶ 임시 디버깅 용도로만 사용하고, 작업이 끝나면 kubectl delete -f ... 명령어로 권한을 회수한다.
[role.yaml]
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: all-access
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["get", "watch", "list", "create", "delete", "update", "patch"]
2. RoleBinding 정의: "누구에게 권한을 줄 것인가?"
앞서 만든 all-access 권한을 워커 노드 그룹(system:nodes)에 연결(Binding)한다.
[roleBinding.yaml]
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: all-access-to-worker-nodes
namespace: default
subjects:
- kind: Group
name: system:nodes # 워커 노드 그룹을 대상으로 지정
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: all-access
apiGroup: rbac.authorization.k8s.io
3. 설정 적용 및 확인
# 권한 설정 적용
kubectl apply -f role.yaml
kubectl apply -f roleBinding.yaml
# 적용 확인
kubectl get role,rolebinding -n default'인프라 > NCP k8s 세팅방법' 카테고리의 다른 글
| 4. Bastion Host Server (중간 서버) SSH 접속 설정 (0) | 2026.09.02 |
|---|---|
| 3. Bastion Host Server (중간 서버) 생성 (0) | 2026.09.02 |
| 2. 쿠버네티스 클러스터 생성 (0) | 2026.09.02 |
| 1. 네트워크 설정 (0) | 2026.09.02 |