multipass指定virualbox搭建k8s集群(选择docker作为默认容器)
阅读原文时间:2021年09月07日阅读:1

目录

前言

上篇文章安装的k3s默认使用的是containerd作为容器,并且是用的轻量级的虚拟化方式。

默认的k3s用的是containerd,下面安装一个docker版本的,并结合virualbox,更愉快地玩耍。

踩了两个大坑

  • multipass得指定网卡,要不master和worker不能互通
  • k3s得指定ip解决agent安装问题,要不会报https不能通过错误

参考文章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

使用multipass shell进入虚拟机安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun


# vim /etc/docker/daemon.json
{
  "registry-mirrors": [
    "http://hub-mirror.c.163.com"
  ]
}
# 重启
systemctl restart docker.service


multipass ls

这里我的master的ip是192.168.44.32

通过 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 -

安装完成如下

cat /var/lib/rancher/k3s/server/node-token

这里我的token是

K1016f9485d04e840ff56fd8d6ca2af3f9a0403795f8c97602396ea3c73d7ff363f::server:8594ea32dca695d9f14b6df06e10f71e

这个token是用来后续安装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

  • 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

这里看到已经正常启动了

  • 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查看的结果

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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章