나그네소

kubernetes 명령어 본문

Cloud/Kubernetes

kubernetes 명령어

나그네소티 2022. 11. 1. 21:09

Kubernetes 에서 사용하는 명령어에 대하여 간략하게 기록 한다.

 

1. kubectl cluster-info

Kuber Master 관련 정보를 보여 준다.
kuber-master:/home/son_kube] kubectl cluster-info
Kubernetes control plane is running at https://10.0.0.109:6443
CoreDNS is running at https://10.0.0.109:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

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

참고 : CNL(Container Network Interface)

 

2. kuberctl 단축키 지정

kuberctl 매번 치기 귀찮아서 alias k='kuberctl' 단축키로 지정 한다.

 

3. kubernetes 자동 완성 기능

kubernetes 구문에 대하여 TAB 처리 시 자동 완성 기능을 제공 하고 있다.

자동 완성 기능은 .bash_profile에 등록 하여 사용 할 수 있다.

[.bash_profile]
- kubenetes 자동 완성 기능
source <(kubectl completion bash)
source <(kubeadm completion bash)

- alias 지정시 자동 완성 기능
alias k='kubectl'
complete -o default -F __start_kubectl k

참고 : kubernetes 관련 commad guild가 있다. Document 관련 검색 하면 위와 관련 된 내용이 나온다.

Link : https://kubernetes.io/ko/docs/home/ 

 

4. Kubernetes 에서 사용하는 Api 목록을 확인 할 수 있다.

kubernetes 에서 여러개의 지원 Api 들이 있는데 생각이 안날때 찾아 보기 용이하다.
kuber-master:/home/son_kube] k api-resources
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
limitranges                       limits       v1                                     true         LimitRange
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim
......

 

  • Help 도움말
    • kuberctl get --help
      get의 명령어에 대한 도움말을 볼 수 있다.

5. pod, node 및 상세 정보 확인

현재 node, pods 의 event 정보 및 상세 정보를 확인 할 수 있다.
kuber-master:/home/son_kube] k describe node kuber-master
Name:               kuber-master
Roles:              control-plane
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
....
Events:
  Type     Reason                   Age                From             Message
  ----     ------                   ----               ----             -------
  Normal   Starting                 12m                kube-proxy       
  Normal   Starting                 12h                kube-proxy       
  Normal   NodeAllocatableEnforced  12h                kubelet          Updated Node Allocatable limit across pods
  Normal   Starting                 12h                kubelet          Starting kubelet.
  Warning  InvalidDiskCapacity      12h                kubelet          invalid capacity 0 on image filesystem
  Normal   NodeHasSufficientMemory  12h (x8 over 12h)  kubelet          Node kuber-master status is now: NodeHasSufficientMemory
  Normal   NodeHasSufficientPID     12h (x7 over 12h)  kubelet          Node kuber-master status is now: NodeHasSufficientPID

 

6. kubernets pod을 생성 한다. 

kubernetes pods 생성 할 때 사용 한다. 
[pod create]
k run webserver --image=nginx:1.14 --port 80

[pod web connect]
kuber-master:/home/son_kube] curl 10.244.2.14
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>

: run command 사용하여 nginx web pod을 생성 한다.

 

7. kubernetes pod을 생성 한다.

run 한개 생성 할 때 create 여러개 배포할 때 사용 한다.
[pods 생성]
kuber-master:/home/son_kube] k create deployment mainui --image=httpd:latest --replicas=3

[pods 확인]
kuber-master:/home/son_kube] k get deployments.apps
NAME              READY   UP-TO-DATE   AVAILABLE   AGE
goldilocks-g1n1   1/1     1            1           12m
mainui            3/3     3            3           72s
: deployment 3개로 배포 되었다.

kuber-master:/home/son_kube] k get pods
NAME                               READY   STATUS    RESTARTS      AGE
goldilocks-g1n1-5876468c7f-qbchd   1/1     Running   1 (10m ago)   12m
mainui-6d6f8b466c-6td67            1/1     Running   0             69s
mainui-6d6f8b466c-mh89b            1/1     Running   0             69s
mainui-6d6f8b466c-ww69x            1/1     Running   0             69s
webserver                          1/1     Running   1 (10m ago)   26m
: pods 3개가 생성 되어 있다.

* mainui-6d6f8b466c-ww69x apache server에 접속해 본다.
kuber-master:/home/son_kube] curl 10.244.2.15
<html><body><h1>It works!</h1></body></html>

 

7-1) POD 정보를 Yaml 형태로 보여 주는 방법.

POD의 정보를 yaml 형식으로 보여 주는 방법이 있다.
[yaml 파일 형식]
kuberctl get pods webserver -o yaml
: yaml  형태로 webserver pods에 대하여 보여준다(yaml 파일을 만들 수 있다.)

8. kubernets log 관련 정보

Pods 생성 시 위와 관련 된 로그 정보를 보여고 할  때 사용한다.
[Pods Log 정보]
kuber-master:/home/son_kube] k logs webserver
10.244.0.0 - - [01/Nov/2022:00:08:18 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
10.244.0.0 - - [01/Nov/2022:00:10:53 +0000] "GET / HTTP/1.1" 200 612 "-" "ELinks/0.12pre6 (textmode; Linux; 143x55-2)" "-"
10.244.0.0 - - [01/Nov/2022:00:27:09 +0000] "GET / HTTP/1.1" 200 10 "-" "curl/7.29.0" "-

 

9. Kubernetes 외부 Port 연동 하기

Container Port를 외부와 연동하여 사용 하려고 할 때 Port를 지정해서 사용해야 한다.
[pods 외부 port 연동]
kuber-master:/home/son_kube] k port-forward webserver 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80

[연동 확인]
[root@kuber-master ~]# curl localhost:8080
HWSON web

 

10. 배포된 Pods 정보 수정 하여 배포 처리.

현재 배포된 Pods의 정보를 수정 하여 배포 하고 싶은 때 사용 한다.
[pods edit 3->5 replica 수정]
kuber-master:/home/son_kube] k edit deployments.apps mainui
--> 수정하고 싶은 내용을 수정 후 저장 후 나오면 반영이 된다.

* 수정 내역
spec:
  progressDeadlineSeconds: 600
  replicas: 5

[pods 확인]
kuber-master:/home/son_kube] k get deployments.apps
NAME              READY   UP-TO-DATE   AVAILABLE   AGE
goldilocks-g1n1   1/1     1            1           31m
mainui            5/5     5            5           19m
: 3개에서 5개로 pods 변경된 것을 알 수 있다.

 

11. 정상 적으로 수행 할 수 있는 명령어 인지 확인.

배포 하기 전 정상 적으로 수행 될 수 있는 부분인지 확인 할 때 사용 한다.
[명령어 확인]
kuber-master:/home/son_kube] k run webserver --image=nginx:1.14 --port 80 --dry-run
W1101 09:36:46.440424    8038 helpers.go:639] --dry-run is deprecated and can be replaced with --dry-run=client.
: 위의 명령어는 정상 적으로 수행 가능한 명령어진이 알 수 있다.

[위의 부분을 yaml으로 작성해 보자]
kuber-master:/home/son_kube] k run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml
W1101 09:37:17.876847    8117 helpers.go:639] --dry-run is deprecated and can be replaced with --dry-run=client.
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: webserver
  name: webserver
spec:
  containers:
  - image: nginx:1.14
    name: webserver
    ports:
    - containerPort: 80
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Cloud > Kubernetes' 카테고리의 다른 글

kubernetes pod container 정리  (0) 2022.11.09
kubernetes yaml 템플릿 과 API  (0) 2022.11.09
Kubernetes for Goldilocks DB POD 생성  (0) 2022.11.08
kubernets namespace  (0) 2022.11.02
kubernetes 동작 원리  (0) 2022.11.02