今天要來聊聊 k8s (k3s) 的操作介面,也就是 kubectl,它是 k8s 提供出來的 cli 版介面,可以透過它資源控制、部署 APP、觀察 cluster 狀態...。
昨天文章有聊到,透過下面指令可以進入到虛擬機
multipass shell test-k3s
預設裝完 k3s ,其實裡面就有搭載 kubectl 可以操作。
但今天假設我們要模擬其實虛擬機是在雲端,實務上也不會 ssh 到該機器才去操作 kubectl ,所以我們還是需要在自己的開發本機安裝 kubectl
這邊提供 官網 的安裝方式,基本上各種 OS 都有支援。
安裝完後,因為我們是透過 multipass + k3s 所組成的,所以設定上稍稍有點不一樣的方式。
先把 k3s 的設定檔移到自己的本機目錄。
multipass exec test-k3s sudo cat /etc/rancher/k3s/k3s.yaml > ~/.kube/k3s.yaml
然後透過下面語法查詢你的 K3S IP
multipass info test-k3s
以我的本機的狀態會得到如下
Name: test-k3s
State: Running
IPv4: 192.168.64.8
Release: Ubuntu 20.04.1 LTS
Image hash: 995771784f85 (Ubuntu 20.04 LTS)
Load: 0.56 0.58 0.64
Disk usage: 2.0G out of 4.7G
Memory usage: 599.4M out of 981.4M
取 IPv4
裡面的 IP 去剛剛複製出來的 k3s.yaml 替換 server: https://127.0.0.1:6443
裡面的 127.0.0.1
然後接下來照著下面的操作方式就可以透過本機的 kubectl 去操作你虛擬機裡的 k3s 了
kubectl --kubeconfig ~/.kube/k3s.yaml get nodes
只要有看到下面類似文字就代表成功了
NAME STATUS ROLES AGE VERSION
test-k3s Ready master 18h v1.18.8+k3s1
如果有其他 kubeconfig 的設定該如何兼容呢? 只要把 config export 出來即可
export KUBECONFIG=~/.kube/config:~/.kube/k3s.yaml
這樣之後,透過
# 因為預設 k3s 的 cluster name 為 default 有需要修改的可以自行修改 k3s.yaml
kubectl config use-context default
以後指令就可以直接下,只要 context 切對,就可以不需要加入 --kubeconfig
。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
test-k3s Ready master 12d v1.18.8+k3s1