0. 실습환경 구성
이전 시간에 배웠던 내용 준비!
- 카타코다
- Play with Kubernetes
- VM 직접설치
1. kubectl
Master node(control plane)에서 쿠버네티스를 통해 각 노드에게 서비스 실행을 요청하는 명령어
# 명령어 기본구조
kubectl [command] [type] [name] [flags]
- command - 자원에 대해 실행할 명령
- type - 자원의 종류
- name - 자원의 이름
- flags - 옵션
kubetl get pod webserver -o wide
kubectl --help
kubectl command --help
kubectl run [resource name] [option]
kubectl create -f obj.yaml
kubectl apply -f obj.yaml
kubectl get [resource name] [object name]
kubectl edit [resource name] [object name]
kubectl describe [resource name] [object name]
kubectl delete pod main
[실습]
그 전에! 재부팅을 했다면,
아마 x509 인증서 문제로 kubectl 명령어가 정상 작동하지 않을 수 있습니다!
더보기
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")
따라서 다음과 같은 명령어를 입력하여 해결해줍니다.
# 출처 - https://jmholly.tistory.com/entry/%EC%97%90%EB%9F%AC%ED%95%B4%EA%B2%B0-Unable-to-connect-to-the-server-x509-certificate-signed-by-unknown-authority-possibly-because-of-cryptorsa-verification-error-while-trying-to-verify-candidate-authority-certificate-kubernetes
unset KUBECONFIG
export KUBECONFIG=/etc/kubernetes/admin.conf
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
또한!
아마 Worker node에서 Master node와 상호 신뢰를 구축하는 token이 만료(24시간)가 되어 새로운 연결을 해야할 것입니다.
더보기
[preflight] Running pre-flight checks
[WARNING FileExisting-tc]: tc not found in system path
따라서 다음과 같은 명령어를 입력하여 새로운 연결 토큰을 생성하고 Worker node 에 입력해줍니다.
#출처 - https://coder-question-ko.com/cq-ko-blog/74129
kubeadm token create --print-join-command #token 정보 출력
kubectl api-resources #명령어 목록 및 약어 정보 확인
kubectl [command] [--help] #명령어 도움말 확인
kubectl get nodes #노드들에 대한 정보 확인
kubectl get nodes -o wide #노드들에 대한 상세 정보 확인
kubectl describe node masterexamplecom #한 노드에 대한 전체 정보 확인
# - 한개인 명령어 = systemfive 계열 명령어(옵션명이 짧다)
# -- 두개인 명령어 = BSD 계열 명령어(옵션명이 길다)
kubectl run webserver --image=nginx:1.14 --port 80 #pod 생성
#run = container pod 를 만드는 명령 / 이름 / 실행할 컨테이너 이미지 및 버전 / 웹서버 - 프로그램이 실행되면서 80번 포트(기본 웹서버 포트)를 열어 client 대기하며 LISTEN
kubectl get pods #pod 정보 확인
kubectl describe pod webserver #pod 정보 전체 확인 - 실행 정도 확인 가능
kubectl get pods -o wide #pod 정보 상세 확인 - 어떤 노드에서 실행하고 있는지 확인가능
curl [ip] #crul = Linux CLI 웹브라우저
kubectl create deployment mainui --image=httpd --replicas=3 #create deployment = pod를 여러개 생성할경우(create와 run이 다른 점) / httpd = Appache 웹 서버 / replics=[num] num 만큼 생성
kubectl get pod webserver -o yaml # pod를 yaml 형태로 열기도 가능
kubectl get pod webserver -o json # pod를 json 형태로 열기도 가능
#컨테이너 내부로 접속(nginx)
kubectl exec webserver -it -- /bin/bash #exec = pod 실행 -/ -it = 터미널을 통한 상호작용 / /bin/bash bash셸 사용
cd /usr/share/nginx/html/
ls
cat index.html
echo "kindongsy Web" > index.html
exit
curl 10.47.0.1
kubectl logs webserver #webserver log 정보
kubectl port-forward webserver 8080:80 # 외부에서 접속
//다른 세션
curl localhost:8080
kubectl get deployments.apps
kubectl edit deployments.apps mainui #동작중인 app 수정
...
sepc:
...
replicas: [num] #[num] 수정하면 개수 변경 가능
kubectl get deployments.apps
#미리 yaml 파일을 만들어서 create 명령어를 통해 App 실행
kubectl run webserver --image=nginx:1.14 --port 80 #이미 존재 - error
kubectl run webserver --image=nginx:1.14 --port 80 --dry-run #실행되는지 상태 확인
kubectl run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml #해당 상태를 yaml 파일로
kubectl run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml > webserver-pod.yaml #쿠버네티스가 사용하는 yaml 파일 생성
vim webserver-pod.yaml
...
creationTimestamp: null #해당 부분삭제
...
spec:
...
resource: {} #resource 부터 마지막 행까지 삭제
...
kubectl get pods
kubectl delete pod webserver #이름이 중복되므로 실행안됨
kubectl get pods
kubectl delete deployments.apps mainui
kubectl get pods
kubectl cerate -f webserver-pod.yaml
kubectl get pods -o wide
'Cloud Native > Kubernetes' 카테고리의 다른 글
쿠버네티스(Kubernetes) - 유튜브 'TTABAE-LEARN' 따라하기 6(쿠버네티스 Pod) (0) | 2022.04.08 |
---|---|
쿠버네티스(Kubernetes) - 유튜브 'TTABAE-LEARN' 따라하기 5(쿠버네티스 Pod) (0) | 2022.04.05 |
쿠버네티스(Kubernetes) - 유튜브 'TTABAE-LEARN' 따라하기 4(쿠버네티스 아키텍쳐) (0) | 2022.03.14 |
쿠버네티스(Kubernetes) - 유튜브 'TTABAE-LEARN' 따라하기 2(쿠버네티스 설치) (0) | 2022.03.03 |
쿠버네티스(Kubernetes) - 유튜브 'TTABAE-LEARN' 따라하기 1(쿠버네티스 시작) (0) | 2022.03.03 |