티스토리 뷰

반응형

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
반응형