multipass指定virualbox搭建k8s集群(选择docker作为默认容器)
目录
前言
上篇文章安装的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节点
注意下面的IP是master的,不是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查看的结果
就是这么简单,你学会了嘛~