티스토리 뷰
1. 제공 받은 계정으로 AWS에 로그인
2. Cloud9 서비스 검색 및 택
3. 환경 생성 클릭
시간 제한- 4시간
4시간 동안 건들지 않으면 중지가 된다.
4.이름 입력
5. 아래와 같이 선택 한 뒤 최하단 생성 클릭
Instance type : t3.small
Platform : Ubuntu Server
6. 본인이 생성한 Cloud환경의 열림 클릭
전형적인 ide 편집기가 나온다.
우측상단 - preference 톱니바퀴 - 유저 세팅
가운데 휠을 내려서 터미널 font size 키우기
마스터, worker 1, worker 2번 저장
7. 좌측 상단 File 클릭, Upload Local Files 클릭하여 제공받은 키페어 파일을 드래그 앤 드랍 또는 파일을 열어 업로드
8. 업로드된 키페어 파일의 권한을 수정
chmod 600 <keypair 파일명>
그냥 명령어에 chmod 600 k8s하고 tab 하면 자동완성된다.
EC2 - 인스턴스에서
인스턴스 IP를 주고, 해당하는 인스턴스상태-시작 하여 실행으로 만든다.
9. ssh 명령을 사용하여 Master에 접속
ssh -i <keypair 파일명> <master ip>
10. hostname 을 변경
sudo -i
sudo hostnamectl set-hostname k8s-master
sudo -i
11. kubernetes 클러스터 설정
kubeadm init --pod-network-cidr=172.16.0.0/16 --apiserver-advertise-address=<Master IP>
마스터를 선언하는 명령어
명령 완료 후 출력되는 kubeadm join 명령어를 메모장에 저장
12. Master 노드 설정
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
13. network plugin 설치
curl -LO https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz
sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
rm cilium-linux-amd64.tar.gz
cilium install
14. kubectl 설정
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
source /etc/bash_completion
alias k=kubectl
complete -F __start_kubectl k
15. Cloud9에서 터미널에 있는 +버튼을 클릭, 터미널을 추가하여 Worker 1 에 접속
ssh -i <keypair 파일명> <worker 1 ip>
16. hostname 변경
sudo -i
sudo hostnamectl set-hostname k8s-worker1
sudo -i
17. Master와 연동
<kubeadm join 이전단계에서 메모장에 저장해둔 명령어>
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
가 나오면 잘 된 것
18. 15~17을 참고하여 worker2 도 Master와 연동 작업 수행
19. Master 에서 연동된 Worker 확인
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 8m17s v1.29.5
k8s-worker1 Ready <none> 98s v1.29.5
k8s-worker2 NotReady <none> 18s v1.29.5
20. 실습 파일 다운로드
git clone https://github.com/education-labs/k8s
kubectl은 마스터 노드에서만 한다.
워커 노드에서는 동작 안한다.
만약에 cloud9을 껐다 켰다면, sudo -i로 해서 권한을 줘야 명령어가 제대로 동작한다.
LAB 2
1. 실습 디렉토리 이동
cd ~/k8s/lab2-pod
1. Pod 조회
kubectl get pods
kubectl get pod
kubectl get po
2. yaml 확인
cat pod.yaml
3. yaml 을 활용한 Pod 생성
kubectl create -f pod.yaml
4. Pod 조회 및 세부정보 확인
kubectl get po
kubectl describe po
5. Pod 삭제
kubectl delete po <Pod명>
kubectl delete po --all
6. Pod 조회
kubectl get pod
7. run 명령을 사용한 pod 생성
조건 pod name : lab2-pod container image : nginx container port : 80
kubectl run lab2-pod --image=nginx --port=80
8. 7과정 에서 생성한 pod 조회
kubectl get po
kubectl describe po
9. 7에서 생성한 pod 삭제
kubectl delete pod lab2-pod
kubectl delete pod --all
LAB 3
Namespace
실습 디렉토리 이동
cd ~/k8s/lab3-ns
1. Namespace 확인
kubectl get namespace
kubectl get ns
NAME STATUS AGE
default Active 21m
kube-node-lease Active 21m
kube-public Active 21m
kube-system Active 21m
2. yaml 확인
cat ns.yaml
apiVersion: v1
kind: Namespace
metadata:
name: lab3-ns
3. yaml 을 활용한 namespace 생성
kubectl create -f ns.yaml
4. Namespace 재확인
kubectl get ns
NAME STATUS AGE
default Active 22m
kube-node-lease Active 22m
kube-public Active 22m
kube-system Active 22m
lab3-ns Active 9s
5. n1 namespace 안에 pod 생성
kubectl create -f pod.yaml -n lab3-ns
6. pod 확인
kubectl get po
kubectl get po -n lab3-ns
NAME READY STATUS RESTARTS AGE
lab3-pod 1/1 Running 0 22s
root@k8s-master:~/k8s/lab3-ns#
describe라는 명령어로 주요 구성을 추가로 확인할 수 있다.
7. pod2.yaml 확인
cat pod2.yaml
apiVersion: v1
kind: Pod
metadata:
name: lab3-pod2
namespace: lab3-ns
spec:
containers:
- name: nginx
image: nginx:1.14.0
ports:
- containerPort: 80
8. pod2.yaml 생성
kubectl create -f pod2.yaml
9. 5에서 생성한 Pod 삭제
kubectl delete pod lab3-pod -n lab3-ns
10. pod 재확인
kubectl get pod -n lab3-ns
NAME READY STATUS RESTARTS AGE
lab3-pod2 1/1 Running 0 36s
11. 3에서 생성한 Namespace 삭제
kubectl delete ns lab3-ns
12. create, run 명령으로 namespace 와 pod 생성
-namespace 조건-
namespace name : lab3-ns2
-pod 조건-
pod name : lab3-pod3
namespace : lab3-ns2
container image : nginx
container port : 80
kubectl create ns lab3-ns2
kubectl run lab3-pod3 --image=nginx --port=80 -n lab3-ns2
root@k8s-master:~/k8s/lab3-ns# kubectl create ns lab3-ns2
namespace/lab3-ns2 created
root@k8s-master:~/k8s/lab3-ns# kubectl run lab3-pod3 --image=nginx --port=80 -n lab3-ns2
pod/lab3-pod3 created
13. 10에서 생성한 namespace와 pod 조회
kubectl get ns
kubectl get pod -n lab3-ns2
NAME STATUS AGE
default Active 26m
kube-node-lease Active 26m
kube-public Active 26m
kube-system Active 26m
lab3-ns2 Active 32s
AME READY STATUS RESTARTS AGE
lab3-pod3 1/1 Running 0 43s
14. namespace 삭제로 해당 namespace에 있던 리소스 모두와 함께 삭제
kubectl delete ns lab3-ns2
15. 삭제 확인
kubectl get ns
default Active 27m
kube-node-lease Active 27m
kube-public Active 27m
kube-system Active 27m