前言

multipass相当于docker版本的虚拟机,k3s是轻便版本的k8s,两者结合让你使用k8s就像德芙一样纵享丝滑。

以下内容由chenqionghe倾情奉献,手把手教你使用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

安装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"



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

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

systemctl status k3s-agent



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

kubectl get nod

测试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



可以看到已经正常运行了

为了访问我们的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

可以看到,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/

    我们分别来访问一下



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"]



重启k3s

sudo systemctl restart k3s

教你用multipass快速搭建k8s集群的更多相关文章

  1. kubeadm快速搭建k8s集群

    环境 master01:192.168.1.110 (最少2核CPU) node01:192.168.1.100 规划 services网络:10.96.0.0/12 pod网络:10.244.0.0 ...

  2. 2.使用kubeadm快速搭建k8s集群

    准备工作: 时间同步 systemctl stop iptables.servicesystemctl stop firewalld.service 安装docker wget https://mir ...

  3. kubeadm 搭建 K8S集群

    kubeadm是K8s官方推荐的快速搭建K8s集群的方法. 环境: Ubuntu 16.04 1 安装docker Install Docker from Ubuntu’s repositories: ...

  4. 菜鸟系列k8s——快速部署k8s集群

    快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...

  5. VMware 克隆linux后找不到eth0(学习hadoop,所以想快速搭建一个集群)

    发生情况:      由于在学习hadoop,所以想快速搭建一个集群出来.所以直接在windows操作系统上用VMware安装了CentOS操作系统,配置好hadoop开发环境后,采用克隆功能,直接克 ...

  6. 快速搭建Jenkins集群

    关于Jenkins集群 在Jenkins上同时执行多个任务时,单机性能可能达到瓶颈,使用Jenkins集群可以有效的解决此问题,让多台机器同时处理这些任务可以将压力分散,对单机版Jenkins的单点故 ...

  7. kubeadm搭建K8s集群及Pod初体验

    基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...

  8. 使用RKE快速部署k8s集群

    一.环境准备 1.1环境信息 IP地址 角色 部署软件 10.10.100.5 K8s Master Etcd.Control 10.10.100.17 K8s Worker1 Worker 10.1 ...

  9. centos7 快速搭建redis集群环境

    本文主要是记录一下快速搭建redis集群环境的方式. 环境简介:centos 7  + redis-3.2.4 本次用两个服务6个节点来搭建:192.168.116.120  和  192.168.1 ...

随机推荐

  1. Blazor 组件之间使用 EventCallback 进行通信

    翻译自 Waqas Anwar 2021年3月28日的文章 <Communication between Blazor Components using EventCallback> [1 ...

  2. DC-7 靶机渗透测试

    DC-7 渗透测试 冲冲冲,好好学习 .对管道符的理解加深了好多.最后提权时,遇到了点麻烦.想不懂一条命令为啥能执行生效,耗了一整天才算解决掉. 操作机:kali 172.66.66.129 靶机:D ...

  3. 承载童年的游戏机,已停产!但我在 GitHub 找到了它们

    那些年,上网用的是电话线,小企鹅也只会笨拙地左右摇晃,手机还只是打电话的工具.虽然那些年没有互联网,但游戏机承载了我的童年. 小时候我老是追着我的两个哥哥,他们带我玩了好多种游戏机,比如街机.红白机. ...

  4. icmp介绍以及arp攻击

    目录 一.ip数据包格式 二.ICMP协议介绍 三.ARP协议介绍 四.ARP攻击原理 一.ip数据包格式 网络层的功能: 定义了基于ip协议的逻辑地址 连接不同的媒介类型 选择是数据通过网络的最佳途 ...

  5. 【SpringCloud技术专题】「原生态Fegin」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上)

    前提介绍 Feign是SpringCloud中服务消费端的调用框架,通常与ribbon,hystrix等组合使用. 由于遗留原因,某些项目中,整个系统并不是SpringCloud项目,甚至不是Spri ...

  6. Java面向对象04——构造器

    类中的构造器也成为构造方法,是在进行创建对象的时候必须调用的.并且构造器有以下两个特点: 必须和类的名字相同 必须没有返回值,也不能写void  package oop.demon01.demon02 ...

  7. js中其他数据类型的值转为字符串的相关总结

    有这样一个面试题: 此题考查的是其他类型的值转换为字符串后的结果 下面我们就由此来总结一下其他类型的值转为字符串后的值都是什么? 从上面的实例可以看出,基本数据类型的值转换成字符串都如我们预期的那样. ...

  8. javaScript学习关于节点

    节点的常用属性和方法: 个人理解,对于节点来说,他就是html里面的标签对象. 通过具体的元素节点调用: getElementsByTagName()方法,获取当前节点的指定标签名孩子节点 appen ...

  9. JS实现自定义工具类,隔行换色、复选框全选、隔行高亮等

    很多功能都可以放在js的工具类中,在使用的时候直接调用 本次实现的功能包括: /** 0.当点击表的整行的任意位置时,第一列的复选框或者单选框均选中  1.隔行换色 2.复选框的全选效果 3.实现表格 ...

  10. 【Java】@Scheduled常用的注解的使用

    @Scheduled注解的使用 cron cron这个参数必须要接受一个cron表达式 cron表达式是个啥呢,Cron表达式是一个具有时间含义的字符串,字符串以5个空格隔开,分为6个域,格式为 X ...