Kubernetes, multipass, k3s, longhorn, pvc 등 관련 용어들에 대해선 조만간 정리하여 업로드할 예정입니다.
brew install --cask multipass
brew install kubectl
kubectl version --client
brew install helm
brew install jp
Multipass cluster 설치는 위의 github repo에 올라와 있는 shell script를 사용하였습니다. 해당 repo를 clone 하고 README
에 나와있는 shell script를 사용하면 손쉽게 multipass cluster가 구축이 완료 됩니다.
Local machine에서 multipass에 설치한 k3s를 접근, 제어 하기 위해선 kube config
를 올바르게 지정해주어야 합니다. K3s의 config 파일은 master node인 node1의 /etc/rancher/k3s/k3s.yaml
경로에 위치하고 있습니다.
cd /etc/rancher/k3s/
sudo cat k3s.yaml
위의 명령어를 수행하면 아래와 같이 k3s의 config 파일을 볼 수 있습니다.
→ 해당 파일을 복사해 ~/.kube/config
에 복사하면 됩니다.
❗ 기존의 config가 있다면 따로 복사본 만들어 놓고 하는 걸 추천드립니다.
ex) mv config config_minikube
KUBECONFIG
환경변수가 ~/.kube/config
에 위치하고 있다는 것을 알려주어야 합니다.
export KUBECONFIG=$HOME/.kube/config
echo $KUBECONFIG
kubectl config view
위의 방법으로는 명령어를 수행한 터미널에만 적용 되기에 ~/.zshrc
파일을 수정하여 환경변수를 지정해두면 됩니다. ( zsh
을 사용하고 있지 않다면 사용하고 있는 터미널 환경에 맞춰서 환경변수를 지정하면 됩니다.)
K8s의 API 주소를
master node의 IP
로 수정해야 합니다. 기존에localhost
로 설정되어 있는 것을master node IP
로 설정해야 로컬 터미널에서kubectl cli
를 사용하더라도 우리가 multipass로 구축한 k3s 클러스터에 접근할 수 있습니다.
127.0.0.1
→ master node IP
로 수정하면 됩니다.아래의 결과는 2-3 까지 수행하고 난 뒤 kubectl config view
명령어를 수행하면 나오는 config
정보 입니다. 보시다시피 clusters의 server IP가 localhost
인 127.0.0.1
로 설정되어 있는 것을 볼 수 있습니다.
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://127.0.0.1:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
Multipass로 구축한 k3s 클러스터의 master node의 IP를 얻기 위해선 multipass shell로 직접 접근해야 합니다.
위의 그림과 같이 multipass에서 master node로 지정한 node의 shell로 직접 들어가 아래의 명령어를 수행하면 node들의 IP 정보를 얻을 수 있습니다.
multipass list
########################
Name State IPv4 Image
primary Stopped -- Ubuntu 22.04 LTS
node1 Running 192.168.64.10 Ubuntu 20.04 LTS
10.42.0.0
10.42.0.1
node2 Running 192.168.64.11 Ubuntu 20.04 LTS
10.42.1.0
10.42.1.1
node3 Running 192.168.64.12 Ubuntu 20.04 LTS
10.42.3.0
10.42.3.1
Master node인 node1의 IP로 kube config를 수정하면 이제 로컬에서도 multipass cluster에 접근할 수 있습니다. 여기에선 node1의 IP가 192.168.64.10
로 나와있는 것을 볼 수 있네요.
이때
port
번호는 건들면 안 됩니다.
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.64.10:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
아래부터는 multipass 설치 shell script를 작성한 해당 repo에서 지원하는 기능들에 대한 간단한 사용법을 적어보았습니다. 더 자세한 내용은 해당 repo의 README
를 확인해보세요!
cd lightweight-kubernetes-sandbox-cli
bash ./packages/kubernetes-dashboard/helm.sh --open
cd lightweight-kubernetes-sandbox-cli
bash ./packages/longhorn/helm.sh --open
ex) pv-model-store.yaml
apiVersion: v1
kind: Pod
metadata:
name: model-store-pod
namespace: kserve
spec:
volumes:
- name: model-store
persistentVolumeClaim:
claimName: model-store
containers:
- name: model-store
image: ubuntu
command: [ "sleep" ]
args: [ "infinity" ]
volumeMounts:
- mountPath: "/pv"
name: model-store
resources:
limits:
memory: "1Gi"
cpu: "1"
kubectl apply -f pv-model-store.yaml
❗ alias k="kubectl"
를 ~/.zshrc
에 적고 source ~/.zshrc
를 하면 kubectl
대신 k
로 사용할 수 있음
k config view
: config 정보 확인k get all -n {namespace}
k apply -f {yaml file name}.yaml
k describe pvc -A
: 모든 namespace에 존재하는 pvc 정보k describe pod -n {namespace} {pod name}