1. Kubectl
https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/
- 설치 방법
- 기본 사용법
- kubectl [command] [TYPE] [NAME] [flags]
2. Kubectl 사용예제 (Echoserver 만들기)
- Echoserver라는 Pod 생성
- kubectl run echoserver --generator=run-pod/v1 --image="k8s.gcr.io/echoserver:1.10" --port=8080
- Eschoserver 서비스 생성 (쿠버네티스의 Pod들이 접근할 때 필요함)
- kubectl expose po echoserver --type=NodePort
- Pod상태 확인
- kubectl get pods
- Service상태 확인
- kubectl get services
- 에코 서버에 접근 가능하도록 포트 포워딩 설정
- kubectl port-forward svc/echoserver 8080:8080
- 브라우저에 localhost:8080 테스트해서 정상적인 페이지가 열린다면 성공
- Pod의 Log 보기
- kubectl logs -f echoserver
참고로 Kubernetes 모드가 Minikube로 되어있다면 docker-desktop으로 바꿔줘야 아래의 에러를 피할 수 있다
"Unable to connect to the server: dial tcp 10.0.0.3/6443: I/o timeout"
(아래 스크린샷 참고)
3. Kubectl 사용예제 (Echoserver 삭제)
- kubectl delete pod echoserver
- kubectl delete service echoserver
4. Kubectl 기타 명령어
- 자원확인
- kubectl api-resources
- 각 node의 IP Fetch
- kubectl get nodes -o wide --no-headers | awk '{print $6}'
- kubectl get nodes -o json | jq -r '.items[].status.addresses[] | select(.type=="InternalIP") | .address'
- kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}'
- gron과 jid는 복잡하나 JSON 구조를 파악해 JSONPath에 인자로 전달할 값을 찾을 때 유용한 도구이다(개인적으론 사용안할듯)
5. Kubectl Run으로 컨테이너 실행하기
- nginx 컨테이너 실행
- kubectl run nginx-app --image nginx --port=80
- kubectl scale deploy nginx-app --replicas=2 (파드개수 늘리기)
- 템플릿으로 컨테이너 실행하기
- kubectl apply -f nginx-deployment.yaml
nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
6. 클러스터 외부에서 클러스터 안 앱에 접속하기
- NodePort 설정 (참고로 Service Type으로는 ClusterIP, NodePort, LoadBalancer, ExternalName, Headless가 있다)
- kubectl expose deployment nginx-deployment --type=NodePort
- Service생성 확인
- kubectl get service
- 또는 kubectl describe service nginx-deployment (더 상세하게 나온다)
- Endpoints를 통해 어느 내부 아이피와 포트가 할당됬는지 알 수 있다(물론 kubectl get pods -o wide를 통해 같은 정보확인이 가능하다).
- 아래의 결과에서 80내부포트가 외부의 32739포트로 연결 되어있음이 확인 가능하다.
- nginx-deployment NodePort 10.105.234.113 <none> 80:32739/TCP 2m27s
'Infra > Kubernetes' 카테고리의 다른 글
4. POD (0) | 2020.06.05 |
---|---|
3. 쿠버네티스 개념 (0) | 2020.06.05 |
1. 쿠버네티스 관련 설정 및 설치 (0) | 2020.06.03 |
4. 파드와 노드 (0) | 2020.05.24 |
3. Kubectl을 사용해서 디플로이먼트 생성하기 (0) | 2020.05.24 |