• OS + Multipass


    s

    https://multipass.run/

    Multipass 是由 Ubuntu 背后的 Canonical 公司开发的,因此 Multipass 所使用的镜像也都是 Ubuntu 镜像,不过对于习惯了使用 CentOS 的用户来说,还是用些许不太习惯。

    Multipass,一款更轻量级的虚拟机

    https://www.icode9.com/content-4-1255884.html

    教你用multipass快速搭建k8s集群

    https://www.likecs.com/show-233548.html

    https://www.cnblogs.com/chenqionghe/p/15227277.html

    教你用multipass快速搭建k8s集群

     

    前言

    人们很少做他们相信是对的事,他们做比较方便的事,然后后悔。——鲍勃·迪伦

    我相信分享技术是对的事~

    multipass相当于docker版本的虚拟机,k3s是轻便版本的k8s,两者结合让你使用k8s就像德芙一样纵享丝滑。下面手把手教你使用multipass和搭建k8s集群,giao~

    一、multipass快速入门

    安装

    下载地址:multipass.run/
    这里我是安装的mac版的

    使用

    • 获取版本信息
    multipass version
    
    • 查找镜像
    multipass find
    
    
    Image Aliases Version Description
    snapcraft:core18 20201111 Snapcraft builder for Core 18
    snapcraft:core20 20201111 Snapcraft builder for Core 20
    snapcraft:core 20210430 Snapcraft builder for Core 16
    18.04 bionic 20210817 Ubuntu 18.04 LTS
    20.04 focal,lts 20210825 Ubuntu 20.04 LTS
    anbox-cloud-appliance latest Anbox Cloud Appliance
    minikube latest minikube is local Kubernetes
    
    • 创建虚拟机
      语法:multipass launch -n 虚拟机名称
      -n, --name: 名称
      -c, --cpus: cpu核心数, 默认: 1
      -m, --mem: 内存大小, 默认: 1G
      -d, --disk: 硬盘大小, 默认: 5G
    multipass launch -n ubuntu-lts -c 4 -m 4G -d 40G
    
    • 进入虚拟机
    multipass shell 虚拟机名称
    
    • 不进入虚拟机直接执行命令
      语法:multipass exec 虚拟机名称 --命令
    multipass exec ubuntu-lts -- ls
    
    • 查看虚拟机列表
    multipass ls
    multipass list
    
    • 查看虚拟机信息
    multipass info 虚拟机名称
    
    • 重启虚拟机
    multipass restart 虚拟机名称
    
    • 删除虚拟机
    # 普通删除(可恢复)
    multipass delete 虚拟机名称
    # 彻底删除
    multipass delete --purge 虚拟机名称 
    
    • 恢复删除虚拟机
    multipass recover 虚拟机名称 
    
    • 启动虚拟机
    multipass start 虚拟机名称 
    
    • 暂停虚拟机
    multipass stop 虚拟机名称 
    
    • 挂载宿主机目录
    multipass mount 宿主机目录 虚拟机名称:虚拟机目录
    
    • 卸载挂载目录
    multipass unmount 虚拟机名称:虚拟机目录
    

    二、使用multipass搭建k8s集群

    创建3台虚拟机

    multipass launch --name master --mem 1G --disk 3G 18.04
    multipass launch --name worker1 --mem 1G --disk 3G 18.04
    multipass launch --name worker2 --mem 1G --disk 3G 18.04
    

    创建完成,查看一下

    multipass ls
    

    image

    安装master节点

    这里是用的k3s,参考k3s文档

    multipass exec master -- /bin/bash -c "curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -"
    

    安装完成后,我们查看一下master的token,用来安装k3s-agent

    multipass exec master -- /bin/bash -c "sudo cat /var/lib/rancher/k3s/server/node-token"
    

    image
    这里我的token是

    K10f1a18fb4cc78db2ef656ac22bf6881f600ac1b19024a2b00f5cc51b92c108eee::server:be939c868d27bbebf0e42cb2d856432f
    

    安装node节点

    # 设置变量
    K3S_URL="https://192.168.64.2:6443"
    K3S_TOKEN="K10f1a18fb4cc78db2ef656ac22bf6881f600ac1b19024a2b00f5cc51b92c108eee::server:be939c868d27bbebf0e42cb2d856432f"
    # 安装worker1
    multipass exec worker1 -- /bin/bash -c "curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=${K3S_URL} K3S_TOKEN=${K3S_TOKEN} sh -"
    # 安装worker2
    multipass exec worker2 -- /bin/bash -c "curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=${K3S_URL} K3S_TOKEN=${K3S_TOKEN} sh -"
    
    

    运行后可以用,检查一下agent是否正常启动

    systemctl status k3s-agent
    

    image
    image

    这里代表都正常运行了,我们再来测试一直k8s集群是否已经正常启动,进入master节点运行

    kubectl get nod
    

    image

    测试k8s集群

    我们来创建一个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
    可以看到已经正常运行了
    为了访问我们的nginx,我们部署一个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
    

    image

    可以看到,svc已经部署成功,并给出了CLUSTER-IP,10.43.148.7,我们可以用两种方式访问nginxdemo

    1. 在集群内用http://10.43.148.7:82/
    2. 在集群外用http://192.168.64.2:30055/、http://192.168.64.3:30055/、http://192.168.64.4:30055/
      我们分别来访问一下
      image
      image

    OK,能正常访问,集群搭建完毕~

    三、其他问题

    不能拉取镜像:报ImagePullBackOff错误

    参考了这篇文章:k3s设置国内加速源
    查看

    crictl info |grep registry
    

    默认镜像源,是docker.io
    我们修改一下镜像源,在/var/lib/rancher/k3s/agent/etc/containerd/config.toml添加

    # 设置镜像源
    [plugins.cri.registry.mirrors]
      [plugins.cri.registry.mirrors."docker.io"]
        endpoint = ["https://docker.mirrors.ustc.edu.cn"]
    

    image
    重启k3s即可

    sudo systemctl restart k3s

    end

  • 相关阅读:
    C#获取局域网MAC地址
    查看Linux是32位还是64位的方法
    JS判断不能为空实例代码
    SQL2005数据库行列转换
    mysql 导入导出数据库、数据表的方法
    linux kill 关闭进程命令
    设置CentOS控制台分辨率图文详解
    Windows 2003 IIS 不支持ASP问题的解决方法
    稳聘App设计图分享
    Sql 中存储过程详细案例
  • 原文地址:https://www.cnblogs.com/lindows/p/16358332.html
Copyright © 2020-2023  润新知