Goal

  • 쿠버네티스 워커노드에 ssh 접속

privileged-pod 생성

  1. 클러스터에 있는 노드를 확인합니다.
    kubectl get nodes
  1. privileged-pod.yaml을 생성 합니다.
apiVersion: v1
kind: Pod
metadata:
  name: privileged-pod
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox
    resources:
      limits:
        cpu: 200m
        memory: 100Mi
      requests:
        cpu: 100m
        memory: 50Mi
    stdin: true
    securityContext:
      privileged: true
    volumeMounts:
    - name: host-root-volume
      mountPath: /host
      readOnly: true
  volumes:
  - name: host-root-volume
    hostPath:
      path: /
  hostNetwork: true
  hostPID: true
  restartPolicy: Never
  1. 쿠버네티스에 privileged-pod를 생성합니다.

    kubectl create -f privileged-pod.yaml
  2. kubectl exec 명령어를 통해 privileged-pod에 ssh 접속 합니다.

    kubectl exec -ti privileged-pod sh
  3. worker node에서 동작중인 pod에게 컨테이너의 파일시스템대신 worker node의 파일시스템 권한을 부여 합니다.

    chroot /host/

※ 특정 노드를 선택해서 접속

  1. privileged-pod2를 생성 합니다.
    pod 생성시 node를 지정해서 , privileged-pod가 들어갈 node를 선택만 하면 됩니다.
apiVersion: v1
kind: Pod
metadata:
  name: privileged-pod2
  namespace: default
spec:
  nodeName: kube-node-2 // kube-node-2에 파드 생성
  containers:
  - name: busybox
    image: busybox
    resources:
      limits:
        cpu: 200m
        memory: 100Mi
      requests:
        cpu: 100m
        memory: 50Mi
    stdin: true
    securityContext:
      privileged: true
    volumeMounts:
    - name: host-root-volume
      mountPath: /host
      readOnly: true
  volumes:
  - name: host-root-volume
    hostPath:
      path: /
  hostNetwork: true
  hostPID: true
  restartPolicy: Never