Skip to content

Instantly share code, notes, and snippets.

@ianychoi
Created July 14, 2021 12:52
Show Gist options
  • Save ianychoi/92888d57b3f33634f945c1cfc1a4b974 to your computer and use it in GitHub Desktop.
Save ianychoi/92888d57b3f33634f945c1cfc1a4b974 to your computer and use it in GitHub Desktop.
쿠버네티스 - 실행 명령 (Command) 및 전달인자 (Arguments)
  • command(실행 명령) & args(파라미터)

    • 파드 생성 시 실행 명령(command = 도커의 Entrypoint)과 전달인자(args = 도커의 Cmd)를 전달할 수 있습니다
    • nginx 기본 이미지를 파드로 생성 시 실행 명령을 확인
    # nginx 파드 생성
    kubectl run cmd-args --image nginx
    
    # 생성된 워커 노드 확인
    kubectl get pod -owide
    
    # 워커노드에서 컨테이너 상세 정보 확인
    docker inspect `docker ps | grep cmd-args | awk '{print $1}'`
    ...
    "Config": {
      ...
    	"Entrypoint": ["/docker-entrypoint.sh"]
    	"Cmd": ["nginx", "-g", "daemon off;"]
    ...
    • cmd-args.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: cmd-args
    spec:
      restartPolicy: OnFailure
      containers:
      - image: nginx
        name: cmd-args-nginx
        ports:
        - containerPort: 80
          protocol: TCP
        command: ["/bin/echo"]
        args: ["hello"]
    • 생성 확인
    curl -s -O https://raw.githubusercontent.com/gasida/DKOS/main/3/cmd-args.yaml
    kubectl apply -f cmd-args.yaml
    
    # 파드가 실행 후 정상 종료된 상태이다
    kubectl get pod -owide
    root@k8s-m:~# kubectl get pod -owide
    NAME       READY   STATUS      RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
    cmd-args   0/1     Completed   0          3m19s   172.16.46.6   k8s-w2   <none>           <none>
    
    # 파드의 로그 확인
    kubectl logs cmd-args
    root@k8s-m:~# kubectl logs cmd-args
    hello
    
    # 워커노드에서 컨테이너 상세 정보 확인 : Entrypoint 와 Cmd 값이 덮어씌어진것을 알 수 있다!
    docker inspect <*종료된 컨테이너 ID*>
    ...
    "Config": {
      ...
    	"Entrypoint": ["/bin/echo"]
    	"Cmd": ["hello"]
    ...
    
    # 다음 실습을 위해서 생성된 파드 삭제
    kubectl delete pod --all
  • env (환경 변수)

    • Pod 에 환경변수 전달, env 속성을 사용

    • env.yaml

      apiVersion: v1
      kind: Pod
      metadata:
        name: mynginx
      spec:
        containers:
        - image: nginx:latest
          name: mynginx
          ports:
          - containerPort: 80
          env:
          - name: MYPASSWORD
            value: QWE123
    • 파드 생성 후 확인

      # 생성
      curl -s -O https://raw.githubusercontent.com/gasida/DKOS/main/3/env.yaml
      kubectl apply -f env.yaml
      
      # 확인
      kubectl exec mynginx -- env
      kubectl exec mynginx -- env | grep MYPASSWORD
      [root@k8s-m ~ (kube:default)]# kubectl exec mynginx -- env | grep MYPASSWORD
      MYPASSWORD=QWE123
      
      # 생성된 워커노드에서 환경변수 정보를 호스트에서도 확인 가능! → 중요한 정보일 경우 보안 관리가 필요
      docker inspect `docker ps | grep nginx | grep -v pause | awk '{print $1}'` --format '{{.Config.Env}}'
      root@k8s-w2:~# docker inspect `docker ps | grep nginx | grep -v pause | awk '{print $1}'` --format '{{.Config.Env}}'
      [MYPASSWORD=QWE123 KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1 KUBERNETES_SERVICE_HOST=10.96.0.1 KUBERNETES_SERVICE_PORT=443 KUBERNETES_SERVICE_PORT_HTTPS=443 KUBERNETES_PORT=tcp://10.96.0.1:443 KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443 KUBERNETES_PORT_443_TCP_PROTO=tcp KUBERNETES_PORT_443_TCP_PORT=443 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NGINX_VERSION=1.21.0 NJS_VERSION=0.5.3 PKG_RELEASE=1~buster]
      
      # 다음 실습을 위해서 생성된 파드 삭제
      kubectl delete pod --all
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment