仅需60秒,使用k3sup快速部署高可用K3s集群
作者简介
Dmitriy
Akulov,连续创业者,16岁时搭建了开源CDN公共服务jsDelivr的v1版本。目前是边缘托管平台appfleet创始人。
原文链接:
前 言
云原生领域正在尝试寻找一种方法来解决在资源受限的环境中运行时Kubernetes资源消耗过多的问题。这一尝试的结果是创建了一个轻量级Kubernetes发行版K3s,该发行版精简了K8S的功能,可以满足在边缘计算环境中、在小型设备上运行Kubernetes集群的需求。发布之后,K3s在社区中迅速流行,短短几个月内Github Star已经达到10,000(目前已经超过12,000)。 这种受欢迎程度为这一项目带来了很大的优势,一些社区用户主动为K3s贡献了周边工具。本文中,我将介绍由Alex Ellis创建的k3sup(发音为“ketchup”),它将帮助你在基础架构中启动K3s。
什么是k3sup?
尽管安装K3s已经十分简单,并且你也可以使用bash轻松启动类似的程序,但是K3s的开发就是为了让原本需要手动操作以及令人困惑的流程自动化,以节省开发人员本来就不多的时间。
当你使用你喜欢的工具配置好一个VM之后,k3sup意味着你只需要60秒即可在自己的计算机上运行kubectl get pod。在0.2.0版本中,你甚至可以将其他节点加入任何现有的K3s集群中。
以下是在README中提到的k3sup用例:
将K3s的Kubernetes引导(bootstrap)到任何VM——在CI期间或通过
cloudinit手动进行在Raspberry Pi(RPi)、VM、AWS EC2、Packet裸机、DigitalOcean、Civo、Scaleway等上使用K3s直接与kubectl连接
从现有的K3s集群中获取可用的KUBECONFIG
使用
k3sup join,将节点加入现有K3s集群
安装k3sup
k3sup Github:https://github.com/alexellis/k3sup
k3sup作为静态Go二进制文件分发,你可以在MacOS和Linux上使用安装程序,也可以访问Release页面下载适用于Windows的可执行文件。你还能够通过k3sup README文件找到详细的安装说明。
$ curl -sLS https://get.k3sup.dev | sh
$ sudo install k3sup /usr/local/bin/
$ k3sup --help
Windows用户请注意:你可以通过Windows Command Prompt(cmd)使用k3sup install和k3sup join命令。
用 法
k3sup主要在台式机/笔记本电脑上运行,但是也提供了针对MacOS、Windows和Linux(包括ARM)的二进制文件。
使用k3sup设置K8S server
你可以设置一个server并在此处停止,或者继续使用join命令将一些agent,或者称为节点或worker添加到集群中以扩展其计算能力。
配置一个运行在兼容操作系统(如Ubuntu、Debian、Raspbian等)上的新VM,确保你选择了将要注册的SSH密钥自动复制到新的VM或主机上。
注意:你可以使用
ssh-copy-id user@IP将ssh密钥远程复制到VM上。
假设IP是192.168.0.1并且用户名是ubuntu,然后你可以运行以下命令:
运行k3sup:
$ export IP=192.168.0.1
$ k3sup install --ip $IP --user ubuntu
现在尝试访问:
$ export KUBECONFIG=`pwd`/kubeconfig
$ kubectl get node
加入一些agent到K8S server
假设你有一台server,并且已经运行以下内容:
$ export SERVER_IP=192.168.0.100
$ export USER=root
$ k3sup install --ip $SERVER_IP --user $USER
接下来,加入一个或更多的agent到集群中:
$ export AGENT_IP=192.168.0.101
$ export SERVER_IP=192.168.0.100
$ export USER=root
$ k3sup join --ip $AGENT_IP --server-ip $SERVER_IP --user $USER
大功告成!因此,无论使用的是本地VM、Raspberry Pi、64位ARM还是EC2上的Cloud VM,使用以上命令你都可以启动并运行两个节点的集群。
创建multi-master(HA)设置
从k3s 1.0开始,可通过sqlite获得HA multi-master配置,这将需要quorum的master,这意味着至少具有三个节点。
用第一台server初始化集群,请注意--cluster标志:
$ export SERVER_IP=192.168.0.100
$ export USER=root
$ k3sup install \
--ip $SERVER_IP \
--user $USER \
--cluster
加入额外的server,注意新的--server标志:
$ export USER=root
$ export SERVER_IP=192.168.0.100
$ export NEXT_SERVER_IP=192.168.0.101
$ k3sup join \
--ip $NEXT_SERVER_IP \
--user $USER \
--server-user $USER \
--server-ip $SERVER_IP \
--server
现在检查kubectl get node:
$ kubectl get node
NAME STATUS ROLES AGE VERSION
paprika-gregory Ready master 8m27s v1.16.3-k3s.2
cave-sensor Ready master 27m v1.16.3-k3s.2
在树莓派上部署K8S(2、3或4版本均适用)
完成以下步骤后,你将在树莓派2、3或4上启动一个Kubernetes,并且安装迅速。最后,你将在本地计算机上拥有一个KUBECONFIG文件,可用于远程访问集群。

具体步骤:
为你的操作系统下载etcher.io
使用Raspbian Lite flash你的SD卡
在启动分区中通过创建一个名为ssh的空文件启动SSH
如果你还没有ssh-keygen,请生成一个ssh-key
使用ping -c raspberrypi.local寻找RPi IP,然后使用IP设置
export SERVER_IP=""使用
ssh-copy-id pi@raspberrypi.local复制你的ssh密钥运行命令
k3sup install --ip $SERVER_IP --user pi指向配置文件并获取节点的状态:
$ export KUBECONFIG=`pwd`/kubeconfig
$ kubectl get node -o wide
现在,你可以从你的笔记本电脑使用kubectl访问运行K3s的树莓派。如果你想加入一些节点,为每个附加的RPi运行export IP="",如下:
$ k3sup join --ip $IP --server-ip $SERVER_IP --user pi
下一步
现在下一步呢?这完全取决于你。这是一个快速发展的项目,每天都有更多更新的内容问世。你可以尝试查看可以将哪些标志和配置合并到集群中以demo该工具,甚至尝试在Github repo中贡献内容。
仅需60秒,使用k3sup快速部署高可用K3s集群的更多相关文章
- kubespray -- 快速部署高可用k8s集群 + 扩容节点 scale.yaml
主机 系统版本 配置 ip Mater.Node,ansible CentOS 7.2 4 ...
- 基于Containerd安装部署高可用Kubernetes集群
转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...
- Rancher 2.2.2 - HA 部署高可用k8s集群
对于生产环境,需以高可用的配置安装 Rancher,确保用户始终可以访问 Rancher Server.当安装在Kubernetes集群中时,Rancher将与集群的 etcd 集成,并利用Kuber ...
- 基于saltstack自动化部署高可用kubernetes集群
SaltStack自动化部署HA-Kubernetes 本项目在GitHub上,会不定期更新,大家也可以提交ISSUE,地址为:https://github.com/skymyyang/salt-k8 ...
- kubeadm部署高可用K8S集群(v1.14.2)
1. 简介 测试环境Kubernetes 1.14.2版本高可用搭建文档,搭建方式为kubeadm 2. 服务器版本和架构信息 系统版本:CentOS Linux release 7.6.1810 ( ...
- kubeasz 部署高可用 kubernetes 集群
文章目录 环境准备 配置模板机 配置hosts解析 配置ssh 免密钥登陆 kubeasz 部署服务准备 配置主机清单 部署集群 环境准备 IP HOSTNAME SYSTEM 192.168.131 ...
- Kubeadm部署高可用K8S集群
一 基础环境 1.1 资源 节点名称 ip地址 VIP 192.168.12.150 master01 192.168.12.48 master02 192.168.12.242 master03 1 ...
- hype-v上centos7部署高可用kubernetes集群实践
概述 在上一篇中已经实践了 非高可用的bubernetes集群的实践 普通的k8s集群当work node 故障时是高可用的,但是master node故障时将会发生灾难,因为k8s api serv ...
- 高可用Kubernetes集群-16. ansible快速部署
说明 本文档指导采用二进制包的方式快速部署高可用kubernetes集群. 脚本托管:k8s-ansible(持续更新) 参考:高可用kubernetes集群 组件版本 组件 版本 备注 centos ...
随机推荐
- testlink配置修改
1. Read/write permissions报错 问题: Checking if /var/testlink/logs/ directory exists [S] </B< ...
- Spark SQL源码解析(三)Analysis阶段分析
Spark SQL原理解析前言: Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述 Spark SQL源码解析(二)Antlr4解析Sql并生成树 Analysis阶段概述 首先 ...
- Nginx+Fastdfs
注: 在配置时,使用非root用户配置 fdfs/fdfs 1. 集群部署 1.1. 准备 创建目录:本文档中所有内容安装到/fdfs目录 [fdfs@5861be93b5b0 /]$mk ...
- notepad正则删除关键词所在行
转自:http://www.gangzi.net/article/615.htm 查找:^.*大师兄.*$替换为:(空) 如果不留空行:查找:^.*大师兄.*\r?\n替换为:(空)注意:Notepa ...
- POJ1475 推箱子---模块化思想
自古逢秋悲寂寥,我言秋日胜春朝. 晴空一鹤排云上,便引诗情到碧霄. --刘禹锡 题目:推箱子 网址:http://poj.org/problem?id=1475 推箱子游戏相信大家都不陌生,在本题中, ...
- 突然地心血来潮,为 MaixPy( k210 micropython ) 添加看门狗(WDT) C 模块的开发过程记录,给后来的人做开发参考。
事情是前几天群里有人说做个看门狗不难吧,5分钟的事情,然后我就怼了几句,后来才发现,原来真的没有看门狗模块鸭. 那好吧,那我就写一下好了,今天是(2020年4月30日)想着最后一天了,不如做点什么有价 ...
- 【已解决】React项目中按需引入ant-design报错TypeError: injectBabelPlugin is not a function
react项目中ant-design按需加载,使用react-app-rewired的时候报错 运行npm start或者yarn start报如下错误: TypeError: injectBabel ...
- 提高Web服务器并发响应的经历
1 前言 ---------- 最近一直在维护一个线上运行的旧系统,系统本身的问题很多,然而又有大量客户准备试用.之前一直存有侥幸心理,希望系统能神奇的顶过这段时间,但这个蜗牛般的系统残忍的告诉我们- ...
- C++获取当前系统时间并格式化输出
C++中与系统时间相关的函数定义在头文件中. 一.time(time_t * )函数 函数定义如下: time_t time (time_t* timer); 获取系统当前日历时间 UTC 1970- ...
- VScode像Codeblocks一样,不启动调试和Debug直接运行
要是配置C++ 编译环境,这边走 用了VScode童鞋,都知道,写C++是不保留窗口的,除非打上断点或者: system("pause"); 这里给大家分享一种不需要,F5或者Ct ...