모의고사 2.3 - 커맨드를 지정한 파드(POD) 생성하기

1. 문제 요건

Create a new pod called super-user-pod with image busybox:1.28. Allow the pod to be able to set system_time.

The container should sleep for 4800 seconds.

  • Pod: super-user-pod
  • Container Image: busybox:1.28
  • SYS_TIME capabilities for the conatiner?



2. 내 풀이

1. 사전 작업

  • kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요).
root@controlplane ~ ➜  source <(kubectl completion bash)

root@controlplane ~ ➜  echo "source <(kubectl completion bash)" >> ~/.bashrc 

root@controlplane ~ ➜  alias k=kubectl

root@controlplane ~ ➜  complete -F __start_kubectl k



2. 커맨드를 지정한 파드(POD) 생성

  • 명령문으로 파드 매니페스트 파일을 생성한다.
root@controlplane ~ ➜  k run super-user-pod --image=busybox:1.28 --dry-run=client -o yaml > super-user-pod.yaml

  • 파드 매니페스트 파일에 수정할 부분이 없는지 확인한다.
root@controlplane ~ ➜  vi super-user-pod.yaml

====

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: super-user-pod
  name: super-user-pod
spec:
  containers:
  - command:
    - sleep
    - "4800"
    image: busybox:1.28
    name: super-user-pod
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

  • Command sleep, “4800” 추가

  • system_time을 추가해야한다: 쿠버네티스 공식문서에서 Security Context 검색 > Set capabilities for a Container 탭으로 이동

apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-4
spec:
  containers:
    image: gcr.io/google-samples/node-hello:1.0
    name: sec-ctx-4
    securityContexts:
      capabilities:
         add: ["NET_ADMIN", "SYS_TIME"]
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: super-user-pod
  name: super-user-pod
spec:
  containers:
  - command:
    - sleep
    - "4800"
    image: busybox:1.28
    name: super-user-pod
    securityContexts:
      capabilities:
         add: ["SYS_TIME"]
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
  • Pod 설정 예시파일을 보고 매니페스트 파일을 수정해준다.

  • 작성한 매니페스트 파일을 이용해 파드를 생성한다.
root@controlplane ~ ➜  k create -f super-user-pod.yaml 
pod/super-user-pod created

  • 파드가 잘 생성되었는지 확인한다.
root@controlplane ~ ➜  k get pods
NAME             READY   STATUS              RESTARTS   AGE
redis-storage    1/1     Running             0          4m5s
super-user-pod   1/1     ContainerCreating   0          31s

3. 참고 URL