目錄
前言
上篇文章安裝的k3s預設使用的是containerd作為容器,並且是用的輕量級的虛擬化方式。
下面安裝一個docker版本的,並結合virualbox,更愉快地玩耍。
踩了兩個大坑
- multipass得指定網路卡,要不master和worker不能互通
- k3s得指定node ip,要不k3s-agent不能通過https方式join到叢集
參考文章https://github.com/k3s-io/k3s/issues/1523
步驟
初始化三臺虛擬機器
sudo multipass set local.driver=virtualbox
multipass launch --name master --network en7 --mem 1G --disk 3G 18.04
multipass launch --name worker1 --network en7 --mem 1G --disk 3G 18.04
multipass launch --name worker2 --network en7 --mem 1G --disk 3G 18.04
這裡的en7是我通過ifconfig
找到的192地址的網路卡
我們開啟virualbox可以檢視到這幾臺機器
sudo VirtualBox
統一安裝docker
使用multipass shell進入虛擬機器安裝
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
修改docker映象源
# vim /etc/docker/daemon.json
{
"registry-mirrors": [
"http://hub-mirror.c.163.com"
]
}
# 重啟
systemctl restart docker.service
檢視masterIP
multipass ls
這裡我的master的ip是192.168.44.32
安裝master節點(重點設定)
通過 multipass shell master
進入master,執行
export K3S_NODE_NAME=master
export K3S_EXTERNAL_IP=192.168.44.32
export INSTALL_K3S_EXEC="--docker --node-ip=$K3S_EXTERNAL_IP --node-external-ip=$K3S_EXTERNAL_IP"
export INSTALL_K3S_MIRROR=cn
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | sh -
安裝完成如下
檢視master的token
cat /var/lib/rancher/k3s/server/node-token
這裡我的token是
K1016f9485d04e840ff56fd8d6ca2af3f9a0403795f8c97602396ea3c73d7ff363f::server:8594ea32dca695d9f14b6df06e10f71e
這個token是用來後續安裝worker節點用的
安裝worker節點
通過multipass shell worker1
進入worker1執行
export K3S_URL="https://192.168.44.32:6443"
export K3S_TOKEN="K1016f9485d04e840ff56fd8d6ca2af3f9a0403795f8c97602396ea3c73d7ff363f::server:8594ea32dca695d9f14b6df06e10f71e"
export K3S_NODE_NAME=worker1
export INSTALL_K3S_MIRROR=cn
export INSTALL_K3S_EXEC="--docker"
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | sh -
安裝完成如下
我們可以用
systemctl status k3s-agent
檢視下agent是否啟動正常
我們再用同樣的方式安裝worker2,進入worker2執行
export K3S_URL="https://192.168.44.32:6443"
export K3S_TOKEN="K1016f9485d04e840ff56fd8d6ca2af3f9a0403795f8c97602396ea3c73d7ff363f::server:8594ea32dca695d9f14b6df06e10f71e"
export K3S_NODE_NAME=worker2
export INSTALL_K3S_MIRROR=cn
export INSTALL_K3S_EXEC="--docker"
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | sh -
安裝完成後,我們在master看下叢集資訊
kubectl get node -o wide
這就代表安裝完成了
測試
這裡我建立了一個自己的資料夾存放yaml
mkdir chenqionghe
cd chenqionghe
部署一個nginx的deployment
我們來建立一個nginx的deployment
- nginxdemo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginxdemo
spec:
replicas: 1
selector:
matchLabels:
name: nginxdemo
template:
metadata:
labels:
name: nginxdemo
spec:
containers:
- name: nginxdemo
image: nginx
ports:
- containerPort: 80
執行一下
kubectl apply -f nginxdemo.yaml
這裡看到已經正常啟動了
部署一個service
- nginxsvc.yaml
apiVersion: v1
kind: Service
metadata:
name: nginxsvc
spec:
type: NodePort
ports:
- port: 82
protocol: TCP
targetPort: 80
name: http
nodePort: 30055
selector:
name: nginxdemo
這裡用的是NodePort的方式來訪問,我們建立一下
kubectl apply -f nginxsvc.yaml
我們kubectl get svc
用檢視一下svc
可以看到svc已經部署成功
訪問一下
這種方法安裝的好處,就是我們可以使用docker,而不需要再去了解containerd,下面是直接在worker1機器用docker ps檢視的結果
就是這麼簡單,你學會了嘛~