나그네소
kubernetes 명령어 본문
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의 명령어에 대한 도움말을 볼 수 있다.
- kuberctl get --help
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 |