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地址的网卡

image
我们打开virualbox可以查看到这几台机器

 sudo VirtualBox

image

统一安装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

image

这里我的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 -

安装完成如下
image
我们可以用

systemctl status k3s-agent

查看下agent是否启动正常
image

我们再用同样的方式安装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

image

这就代表安装完成了

测试

这里我创建了一个自己的文件夹存放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

image

这里看到已经正常启动了

部署一个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已经部署成功

访问一下
image
image

这种方法安装的好处,就是我们可以使用docker,而不需要再去了解containerd,下面是直接在worker1机器用docker ps查看的结果
image

就是这么简单,你学会了嘛~

posted @ 2021-09-06 17:36  雪山飞猪  阅读(1370)  评论(2编辑  收藏  举报