본문 바로가기

리눅스

쿠버네티스 클러스터와 관련된 정보를 가져오거나 명령어의 기능을 설명

728x90

쿠버네티스 클러스터와 관련된 정보를 가져오거나 명령어의 기능을 설명

쿠버네티스 클러스터에 대한 정보를 확인

  • 현재 작동 중인 쿠버네티스 클러스터에 대한 정보를 표시합니다. 이는 API 서버와 다른 구성 요소의 엔드포인트를 확인하는 데 사용됩니다.
sudo kubectl cluster-info
$ sudo kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

등록된 노드 이름과 상태를 확인

  • 현재 클러스터에 등록된 노드를 표시합니다. 각 노드의 이름과 상태를 확인할 수 있습니다.
sudo kubectl get nodes
$ sudo kubectl get nodes
NAME       STATUS   ROLES           AGE    VERSION
minikube   Ready    control-plane   118m   v1.28.3

클러스터에서 발생한 이벤트를 표시

  • 현재 클러스터에서 발생한 이벤트를 표시합니다. 이벤트는 클러스터의 상태 변경 사항이나 중요한 경고에 관한 정보를 제공합니다.
sudo kubectl get events

kubectl_get_events

클러스터 및 사용자 인증 정보를 확인

  • 현재 사용되는 kubeconfig 파일의 내용을 표시합니다. 이는 클러스터 및 사용자 인증 정보를 관리하는 데 사용됩니다.
sudo kubectl config view
$ sudo kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /root/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Fri, 02 Feb 2024 13:27:48 KST
        provider: minikube.sigs.k8s.io
        version: v1.32.0
      name: cluster_info
    server: https://192.168.49.2:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Fri, 02 Feb 2024 13:27:48 KST
        provider: minikube.sigs.k8s.io
        version: v1.32.0
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /root/.minikube/profiles/minikube/client.crt
    client-key: /root/.minikube/profiles/minikube/client.key

디플로이먼트 생성

  • 지정된 이미지를 사용하여 "hello-world"이라는 이름의 새로운 디플로이먼트를 생성합니다. 이 디플로이먼트는 샘플 웹 애플리케이션을 배포합니다.
sudo kubectl create deployment hello-world --image=gcr.io/google-samples/hello-app:1.0
$ sudo kubectl create deployment hello-world --image=gcr.io/google-samples/hello-app:1.0
deployment.apps/hello-world created

서비스 생성

  • "hello-world" 디플로이먼트를 외부에 노출시키는 서비스를 생성합니다. 이 서비스는 NodePort 유형으로 생성되며, 포트 8080으로 내부 파드와 외부로 연결됩니다.
sudo kubectl expose deployment hello-world --type=NodePort --port=8080
$ sudo kubectl expose deployment hello-world --type=NodePort --port=8080
service/hello-world exposed

파드 실행

  • "webserver"라는 이름으로 Nginx(nginx:latest) 이미지를 사용하여 파드를 실행합니다. 이 파드는 포트 80에서 Nginx를 실행합니다.
sudo kubectl run webserver --image=nginx:latest --port 80
$ sudo kubectl run webserver --image=nginx:latest --port 80
pod/webserver created

파드 상태 확인

  • 현재 클러스터에서 실행 중인 파드를 표시합니다. 파드의 상태, IP 주소, 노드 등의 세부 정보를 포함하여 넓은 출력 형식으로 표시됩니다.
sudo kubectl get pods -o wide
$ sudo kubectl get pods -o wide
NAME                          READY   STATUS    RESTARTS   AGE     IP            NODE       NOMINATED NODE   READINESS GATES
hello-world-7879445f4-dhwwf   1/1     Running   0          2m30s   10.244.0.13   minikube   <none>           <none>
webserver                     1/1     Running   0          21s     10.244.0.14   minikube   <none>           <none>

디플로이먼트 확인

  • 현재 클러스터에서 실행 중인 디플로이먼트를 표시합니다. 각 디플로이먼트의 이름, 준비 상태, 업데이트 상태 등의 정보를 확인할 수 있습니다.
sudo kubectl get deployment
$ sudo kubectl get deployment
NAME          READY   UP-TO-DATE   AVAILABLE   AGE
hello-world   1/1     1            1           2m58s

서비스 확인

  • 현재 클러스터에서 실행 중인 서비스를 표시합니다. 각 서비스의 이름, 유형, 클러스터 IP, 노출된 포트 등의 정보를 확인할 수 있습니다.
sudo kubectl get services
$ sudo kubectl get services
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-world   NodePort    10.103.30.179   <none>        8080:32077/TCP   2m38s
kubernetes    ClusterIP   10.96.0.1       <none>        443/TCP          133m

curl 명령어로 웹 페이지 확인

kubectl_get_services

curl http://$(minikube ip):32077
$ curl http://$(minikube ip):32077
Hello, world!
Version: 1.0.0
Hostname: hello-world-7879445f4-dhwwf

대시보드 enable

sudo minikube addons enable dashboard
sudo minikube dashboard

kubectl을 사용하여 클러스터 내의 API 서버에 로컬 포트 포워딩을 설정

kubectl proxy --address='0.0.0.0' --disable-filter=true
$ sudo minikube dashboard
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:45703/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

포트 포워딩을 백그라운드로 실행

kubectl proxy --address='0.0.0.0' --disable-filter=true &
$ W0202 16:02:25.730597  190199 proxy.go:177] Request filter disabled, your proxy is vulnerable to XSRF attacks, please be cautious
Starting to serve on [::]:8001

웹 브라우저를 통해 대시보드에 접속

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/workloads?namespace=default

kubernetes_dashboard

 

728x90