zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    学习笔记
    聊聊字节序
    SPDK发送和接收连接请求的处理
    企业设备维护——不仅仅是解决问题
    怎样快速找到某一行代码的git提交记录
    生产环境中利用软链接避免"rm -rf /"的方法
    程序员五年小结
    Django Model 数据库增删改查
    python中字符串列表字典常用方法
    python编辑配置
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/15234814.html
Copyright © 2011-2022 走看看