windows下使用multipass搭建k3s


前言

如何在windows10环境下基于multipass搭建一个多节点的k3s环境,然后可以用这个轻量级的环境来学习k8s

一、说明

  1. 为什么是windows10: 因为我自己的机器就是个win10,而且大部分人,其实用的也是win10
  2. 为什么是multipass: 因为这个虚拟机管理很轻量,用起来也不错,简单,够用
  3. 为什么是k3s: k3s是Rancher实验室发布的轻量级Kubernetes发行版,是由CNCF完全认证的Kubernetes产品。
    功能上它和k8s没有什么不同,但是它非常轻量级,用来做学习和测试绰绰有余
  4. 有没有其他的方案: 有,比如windows下安装一个docker-desktop然后开启它的k8s功能,但是这个不太稳定(也可能是在我机器上不稳定),而且是单节点。

二、前置条件

环境

windows10 专业版本
可用资源 4c 16G 100G

目标

搭建一个3节点(server+agent*2)的k3s集群
部署一个应用到k3s集群

三、准备工作

开启windows hyper-v

首先开启硬件虚拟化功能
进bios开启,intel和amd开启方式略有不同,请自行百度
如果这一步无法进行,请关闭本文档

win10 开启hyper-v
控制面板 -> 程序 -> 启用或关闭windows功能 -> 勾选Hyper-V 选项 -> 点击确定
在这里插入图片描述
待服务成功开启后,win搜索 -> Hyper-V管理器,打开,代表已经成功启用服务
在这里插入图片描述

安装multipass

网址 https://multipass.run/install
选择 windows 点击下载
在这里插入图片描述
注意红线中的安装环境需求,当然我们已经开启了hyper-v 就不需要安装virtualbox了
傻瓜式安装,一直下一步即可
安装完成后打开命令行输入

$ multipass version

看到输出
在这里插入图片描述
代表成功

创建虚拟机

创建server节点

$ multipass launch jammy -n k3s -c 2 -m 4G -d 10G

创建2个agent节点

$ multipass launch jammy -n k3s-w1 -c 2 -m 4G -d 10G
$ multipass launch jammy -n k3s-w2 -c 2 -m 4G -d 10G

等待创建完成后

$ multipass ls

显示
在这里插入图片描述
表示成功

注意,本文档所有软件版本和安装说明均基于当前(24年4月)时间,当前版本1.13.1的multipass, 安装的是 ubuntu 22.04(既命令中的jammy)

四、安装k3s

server节点启动k3s

进入k3s虚机

$ multipass shell k3s

进入后切换到root用户,开始安装

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

对于这段命令官网有更详细的说明

安装完成后,看一下服务状态

$ systemctl status k3s

在这里插入图片描述
查看nodes

$ kubectl get nodes

在这里插入图片描述
服务显示running且能看到节点状态ready表示成功

可选配置

默认情况下multipass创建的虚机,ip会在虚机重启后发生改变,如果server节点的ip发生了变化,这将导致集群中的agent节点失联,所以最好为server节点配置静态ip,配置方法在我另一篇文章中
windows下multipass虚机设置静态ip
这是个可选配置(如果你搭好了集群就不关机或者就想一次性使用的话忽略以上配置)

创建agent节点

先获取server节点的token
在进入k3s虚机,切换到root用户(或者sudo)执行

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

会得一个token字符串,记录下来,之后会用于agent节点的创建(agent节点的加入需要该token用于验证)
在这里插入图片描述
退出到windows命令行,执行

$ multipass ls

在这里插入图片描述
记录下k3s节点(server节点)的 IPv4
此时我们已经有了 tokenserverIP

现在进入之前创建的两台虚机上(k3s-w1和k3s-w2)切换到root用户并执行

$ curl –sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | \
     INSTALL_K3S_MIRROR=cn K3S_URL=https://serverIP:6443 K3S_TOKEN=token sh -s -

注意,替换命令中的token和serverIP为刚刚记录的值
对于这段命令官网有更详细的说明

检查结果,切换到k3s节点(server节点),使用root账户,执行

$ kubectl get nodes

在这里插入图片描述
所有节点状态 Ready,代表全部创建成功

部署应用

说明

此处部署一个应用仅为验证集群的可用性,并获得对k3s集群操作的初步印象,因此本次部署将直接在server节点上从.yaml文件进行

部署mysql

进入k3s节点(server节点)
创建一个mysql.yaml文件,写入

# 创建mysql应用容器
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql-db1
spec:
  replicas: 1
  selector:
    app: mysql-db1
  template:
    metadata:
      name: mysql-db1
      labels:
        app: mysql-db1
    spec:
      containers:
        - name: mysql-db1
          image: mysql
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123456"
---
# 创建nodeport,暴露mysql服务到外部
apiVersion: v1
kind: Service
metadata:
  name: mysql-db1-service
spec:
  type: NodePort
  ports:
    - port: 3306
      targetPort: 3306
      # 默认端口范围为 30000~32767,本配置下30036端口将能被宿主机访问
      nodePort: 30036
  selector:
    app: mysql-db1

然后执行

$ kubectl create -f YOURPATH/mysql.yaml

注意,替换其中的YOURPATH为mysql.yaml文件所在路径

验证

$ kubectl get pods

在这里插入图片描述

$ kubectl get svs

在这里插入图片描述
能看到pod和service已经创建,现在在windows宿主机上尝试连接数据库(可能需要等待几分钟)
在这里插入图片描述
连接成功,部署完成

总结

本文仅是最基本的k3s部署和应用说明,其中使用的k3s部署和mysql部署也并非真实生产服部署方式

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值