끝내주는 사이트 찾음
pod, service, deployment, PV 등을 직접 생성해보고, 수정해보고, 삭제해봄.
명령어들과 yaml 을 아래 주르륵 적어둠
kubernetes 버전 확인
kubectl version |
어떤 필드가 있고 어떤 역할을 하는지 살펴보기
예를 들어 아래 명령어를 사용하면 pods 의 템플릿에서 사용하는 하위 필드로 무엇이 있는지,
각 필드의 데이터 타입이 뭔지 보여줌
kubectl explain pods kubectl explain pods.metadata kubectl explain pods.metadata.annotations kubectl explain pods --recursive //파드 아래에 속한 모든 필드 설명 보기 |
오브젝트 및 컨트롤러 상황 보기
kubectl get deploy,rs,rc,pods,namespaces, statefulset, services kubectl get pods --all-namespaces |
템플릿 기본 형식
--- apiVersion: v1 kind: Pod metadata: spec: |
apiVersion 을 위해 kubectl api-versions 명령으로
현재 클러스터에서 사용 가능한 API 버전을 확인 가능
yaml 파일 실행 및 업데이트
kubectl apply -f my-yaml-file.yaml 이후 kubectl get deploy,rs,rc,pods,namespaces 명령으로 STATUS 가 running 인지 확인 |
현재 실행중인 오브젝트 자세히 보기
kubectl describe pods [파드 이름] kubectl describe pods my-pod kubectl describe statefulsets [스테이트풀세트 이름] kubectl describe services [서비스 이름] |
비단 pods 외 deployments 등도 확인 가능
my-pod 라는 이름의 파드 안의 컨테이너에게 exec 를 사용하여 컨테이너 안에 접근 가능.
마치 docker container 접속시 docker exec -it my-container bash 명령어처럼.
만약 파드 안에 my-nginx라는 이름의 container 가 하나 실행중이라고 하자.
kubectl exec -it [pod 이름] sh kubectl exec -it my-pod sh |
만약 my-pod 라는 이름의 파드 안에
my-nginx 라는 이름의 컨테이너 하나와 your-nginx 라는 이름의 컨테이너 하나가 있다고 하자.
이 때는 -c 명령어를 통해 컨테이너 이름을 직접 지명해줌
kubectl exec -it my-pod sh -c my-nginx kubectl exec -it my-pod sh -c your-nginx |
파드 내 컨테이너의 로그를 보려면 아래 명령어를 사용
kubectl logs -f [pod 이름] -c [컨테이너 이름] kubectl logs -f my-pod -c my-nginx |
Deployment Yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx-deployment template: metadata: labels: app: nginx-deployment spec: containers: - name: nginx-deployment image: nginx ports: - containerPort: 80 |
결과 (bold 처리 된 부분)
Deployment 에서 컨테이너 이미지 정보 확인
kubectl get deploy [디플로이먼트이름] -o=jsonpath="{.spec.template.spec.containers[0] .image}{'\n'}" $ kubectl get deploy nginx-deployment -o=jsonpath="{.spec.template.spec.containers[0] .image}{'\n'}" nginx |
Stateful Set Yaml
apiVersion: v1 kind: Service metadata: name: statefulset-service labels: app: statefulset-service spec: ports: - port: 80 name: web clusterIP: None selector: app: mystatefulset --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: mystatefulset serviceName: "statefulset-service" replicas: 3 template: metadata: labels: app: mystatefulset spec: terminationGracePeriodSeconds: 10 containers: - name: mystatefulset image: nginx ports: - containerPort: 80 name: web |
결과
$ kubectl get statefulset,services,pods NAME READY AGE statefulset.apps/web 3/3 11h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.8.0.1 <none> 443/TCP 17h service/statefulset-service ClusterIP None <none> 80/TCP 11h NAME READY STATUS RESTARTS AGE pod/web-0 1/1 Running 0 11h pod/web-1 1/1 Running 0 11h pod/web-2 1/1 Running 0 11h |
파드(web-0) 안의 들어가기
kubectl exec -it web-0 sh //현재 web-0 내에 nginx container 하나만 구동되고 있기 때문에 위와 같이 해주어도 괜찮음 //만약 다른 container 가 돌고있다면 -c 옵션을 줘서 이름을 직접 넣어줘야 함 |
서비스 ip 보는 방법
kubectl get services |
Service YAML (ClusterIP)
apiVersion: v1 kind: Service metadata: name: my-service spec: type: ClusterIP clusterIP: 10.0.10.10 selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 9376 |
Service YAML (NodePort)
apiVersion: v1 kind: Service metadata: name: nodeport-service spec: type: NodePort selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 9376 nodePort: 30080 |
Service, Deployment 등 삭제하는 방법
kubectl delete services [서비스 이름] |
pods IP 보는 법
kubectl get pods -o wide 혹은 kubectl get pods --selector=[라벨] -o jsonpath='{.items[*].status.podIP}' $ kubectl get pods --selector=app=service_test_pod -o jsonpath='{.items[*].status.podIP}' |
'Docker' 카테고리의 다른 글
[Kubernetes] ingress-nginx 사용 실습 링크 (0) | 2020.11.25 |
---|---|
[Kubernetes] NodePort vs LoadBalancer vs Ingress 링크 (0) | 2020.11.25 |
[Kubernetes] Certified Kubernetes Administrator 자격증 준비 링크 (0) | 2020.11.17 |
[Kubernetes] 네트워크 설명 링크 (0) | 2020.11.16 |
[Docker] Ubuntu 에 Docker 설치하는 방법 (0) | 2020.11.12 |