1. 하고자 하는것
2. Multipass install 및 Instances 생성
2.1. 설치
2.2. list failed: cannot connect to the multipass socket
2.3. Instances 생성
3. Kubernetes Cluster 설치 및 Nodes 등록
3.1. shell login 하기
3.2. 환경 구성하기
3.3. Kubernetes cluster 생성
3.4. Network Plugin 설치
4. Local에서 Master Cluster 접근하기
1. 하고자 하는것
Ubuntu local computer에 kubernetes환경(1master 2nodes)을 구성하고
local 컴퓨터에서 kubernetes환경을 접근한다.
2. Multipass install 및 Instances 생성
2.1. 설치
우선 Multipass를 설치하자.
steven@steven-ubuntu:~$ sudo snap install multipass
bash
ubuntu의 경우 "sudo snap install multipass"를 입력하면 된다.
snap "multipass" (7455) 서비스 시작
multipass1.9.2 from Canonical✓ installed
bash
위와 같이 multipass가 다 설치 되면, 아래와 같이 명령어를 실행 시켰을 때 나오면 된다.
steven@steven-ubuntu:~$ multipass list
No instances found.
bash
2.2. list failed: cannot connect to the multipass socket
만약 위와 같은 오류가 나온다면 multipass의 socket파일 권한 오류이다.
$ systemctl status snap.multipass.multipassd.service
$ systemctl status snap.multipass.multipassd.service
● snap.multipass.multipassd.service - Service for snap application multipass.multipassd
Loaded: loaded (/etc/systemd/system/snap.multipass.multipassd.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-08-23 10:23:52 KST; 1min 48s ago
Main PID: 9104 (multipassd)
Tasks: 23 (limit: 37379)
Memory: 128.7M
CPU: 1.118s
CGroup: /system.slice/snap.multipass.multipassd.service
├─9104 /snap/multipass/10244/bin/multipassd --verbosity debug --logger platform
└─9205 /snap/multipass/10244/usr/sbin/dnsmasq --keep-in-foreground --strict-order --bind-interfaces --pid-file --domain=multipass --local=/multipass/ --except->
8월 23 10:24:10 theyoung-MS-7D77 multipassd[9104]: Loading "charm-dev" v1
8월 23 10:24:10 theyoung-MS-7D77 multipassd[9104]: Loading "docker" v1
8월 23 10:24:10 theyoung-MS-7D77 multipassd[9104]: Loading "jellyfin" v1
8월 23 10:24:10 theyoung-MS-7D77 multipassd[9104]: Loading "minikube" v1
8월 23 10:24:10 theyoung-MS-7D77 multipassd[9104]: Loading "ros-noetic" v1
8월 23 10:24:10 theyoung-MS-7D77 multipassd[9104]: Loading "ros2-humble" v1
8월 23 10:24:10 theyoung-MS-7D77 multipassd[9104]: gRPC listening on unix:/var/snap/multipass/common/multipass_socket
8월 23 10:24:11 theyoung-MS-7D77 multipassd[9104]: QIODevice::write (QFile, "/var/snap/multipass/common/cache/multipassd/vault/multipassd-image-records.json"): device not >
8월 23 10:24:11 theyoung-MS-7D77 multipassd[9104]: Starting Multipass 1.12.2
8월 23 10:24:11 theyoung-MS-7D77 multipassd[9104]: Daemon arguments: /snap/multipass/10244/bin/multipassd --verbosity debug --logger platform
bash
위의 내용을 보면 어떤 소켓을 접근 하는지 알 수 있다.
gRPC listening on unix:/var/snap/multipass/common/multipass_socket
해당 소켓에 대한 접근 권한을 확인하자
$ ls -al /var/snap/multipass/common/multipass_socket
srw-rw-rw- 1 root root 0 8월 23 10:24 /var/snap/multipass/common/multipass_socket
bash
root권한과 root그룹 권한을 갖는 것을 알 수 있다.
내가 갖고 있는 그룹 권한에 해당 파일을 추가 시켜 주자.
(물론 root권한 그룹이 아니라면 해당 그룹을 나의 계정에 추가 해주는 방법도 있다)
$ groups
theyoung adm cdrom sudo dip plugdev ssl-cert lpadmin lxd sambashare wireshark docker
bash
내 계정이 갖고 있는 그룹을 확인할 수 있다.
docker 그룹에 해당 소켓을 추가 해보자.
$ sudo chgrp docker /var/snap/multipass/common/multipass_socket
bash
다시 list를 확인해 보자
$ multipass list
list failed: The client is not authenticated with the Multipass service.
Please use 'multipass authenticate' before proceeding.
bash
무언가를 더 확인해 달라고 한다.
아래와 같이 multipass에 접근 가능한 비밀번호를 입력하자.
$ sudo multipass set local.passphrase
Please enter passphrase:
Please re-enter passphrase:
bash
이제 다시 authentication 처리를 하면
$ multipass authenticate
Please enter passphrase:
bash
아래와 같이 multipass를 사용할 수 있다
$ multipass list
No instances found.
bash
2.3. Instances 생성
인스턴스는 모두 3개를 생성할 예정이다.
Master하나 Nodes2개이다.
각 Instances별 기본 Spec은 아래 링크에 따랐다.
https://docs.oracle.com/en/operating-systems/olcne/1.1/relnotes/hosts.html
steven@steven-ubuntu:~$ multipass launch --cpus 4 --mem 16G --name master
Launched: master
steven@steven-ubuntu:~$ multipass launch --cpus 2 --mem 8G --name node1
Launched: node1
steven@steven-ubuntu:~$ multipass launch --cpus 2 --mem 8G --name node2
Launched: node2
bash
위와 같이 3개의 Instances가 생성 완료 된 후 아래와 같이 정상적으로 실행이 되는 것을 확인 할 수 있다.
steven@steven-ubuntu:~$ multipass list
Name State IPv4 Image
master Running 10.112.125.79 Ubuntu 20.04 LTS
node1 Running 10.112.125.159 Ubuntu 20.04 LTS
node2 Running 10.112.125.243 Ubuntu 20.04 LTS
bash
3. Kubernetes Cluster 설치 및 Nodes 등록
3.1. shell login 하기
steven@steven-ubuntu:~$ multipass shell node1
bash

multipass의 shell 명령어를 이용해서 master, node1, node2에 shell 진입을 해주자.
3.2. 환경 구성하기
kubernetes환경은 2가지 작업이 필요하다.
- Docker설치
- Kubernetes 설치
이 두가지 작업은 다음 github에 있는 Shell Script를 활용 하겠다. (Sander van Vugt 선생닝 Repo이다.)
master,node1,node2모두에 동일하게 git clone을 진행해 주자.
ubuntu@master:~$ git clone https://github.com/sandervanvugt/cka.git
Cloning into 'cka'...
remote: Enumerating objects: 185, done.
remote: Counting objects: 100% (93/93), done.
remote: Compressing objects: 100% (64/64), done.
remote: Total 185 (delta 43), reused 35 (delta 29), pack-reused 92
Receiving objects: 100% (185/185), 344.62 KiB | 2.73 MiB/s, done.
Resolving deltas: 100% (75/75), done.
bash
역시 master,node1,node2 모두 아래 명령어를 실행 시켜 준다.
ubuntu@master:~/cka$ ./setup-container.sh
ubuntu@node2:~/cka$ sudo ./setup-kubetools.sh
bash
이제 Docker와 Kubernetes가 다 설치 완료 되었다.
3.3. Kubernetes cluster 생성
master에 Control pane을 만들어 주자.
ubuntu@master:~/cka$ sudo kubeadm init
bash
성공적으로 설치가 완료 되었다면 아래와 같이 master에서만 명령어를 실행 시켜준다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
bash
이제 Control Pane 설치가 완료 되었음으로 Node를 등록해야 한다.
Node1,Node2에서는 아래 명령어를 실행해 준다.
sudo kubeadm join 10.112.125.79:6443 --token 9l0e6o.qj4woevjzw2d6323 \
--discovery-token-ca-cert-hash sha256:d726f1abcd3601d00a0146fe7d2a78cafcf732d16e76f39a6117495e75987828
bash
위에 명령어는 설치 마지막에 나오는 값이다.

Node 3개가 나오면 Kubernetes 설치를 완료 한 것이다.

3.4. Network Plugin 설치
위에서 보면 get nodes의 결과에 Status가 NotReady인것을 확인 할 수있다.
네트워크 설치가 필요하다.
https://kubernetes.io/docs/concepts/cluster-administration/networking/
cluster network를 위해서 plugin을 설치해 줘야 한다.
여기서는 calico를 설치 하고자 한다.(version changed) move to weave
weave
$ kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
bash
위와 같이 calico를 설치한 후 Status가 모두 Running 및 Ready 상태가 된 것을 확인 할 수 있다.


4. Local에서 Master Cluster 접근하기
Cluster에 접근하기 위한 방법은 인증서, ID/PW 등이 있는데, 로컬에 만드는 것이기 때문에 불필요하다.
master에 존재하는 ~/.kube/config 파일을 local computer에 있는 ~/.kube/config 파일로 overwrite 시키자.
sft를 이용해서 master이하에 있는 ./kube/config 파일을 local computer의 ~/.kube/config로 변경시키고 난 후의 모습이다.

이제 Local에서 master cluster를 Control 가능하게 되었다.
'AWS' 카테고리의 다른 글
Multipass Disk Size (Memory/Cpu) Change (용량 변경) (0) | 2022.07.17 |
---|---|
Calico FailedCreatePodSandBox Unauthorized (2) | 2022.07.11 |
AWS 요금 확인 및 리소스 정리하기 (0) | 2022.07.09 |
RDS 리소스 삭제하기 (0) | 2022.07.09 |
kubectl 1.24 error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" (0) | 2022.06.11 |