首先先感谢老哥的文章:h构建多云环境下的K3S集群,但是我尝试在centos 8.2上面前面一直执行报错



并且安装glibc 2.17时还会报错make版本太低,所以直接放弃centos,投入ubuntu的怀抱

现在腾讯云的活动确实不错,【腾讯云】云产品限时秒杀,爆款2核4G云服务器首年74元,点进去之后三年8M 2c4g轻量应用服务器222元,月流量1200G,好了,说说k3s吧,K3s相对比K8s更加轻量,对于服务器的要求较低:

  • 系统内核版本:Linux 3.10+ (CentOS 7, Debian 8/9, Ubuntu 14.04+)
  • K3S Server端最低内存要求:512 MB
  • K3S Agent端内存最低要求:75MB
  • 磁盘空间最低要求:200 MB
  • 支持的硬件架构:x86_64, ARMv7, ARM64

实际使用过程中,可以在各种环境中进行使用(k3s在小到树莓派或大到 AWS a1.4xlarge 32GiB服务器的环境中),也就是使用场景可以小到一个家庭内部的小盒子(斐讯N1)

由于我之前买了一个三年的阿里云服务器(1M 1c2g),准备拿阿里云服务器做server,腾讯云服务器做agent做一个单master,单node的k3s集群,不同云服务器见通过内网是访问不了的(可以拓展一下场景,比如家内的linux服务器和外网的云服务器之间也是内网不通的),就需要wireguard来帮助我们做好vpn的功能,服务器的内核建议升级到5.6以上(centos和ubuntu下uname -r查看),如果内核版本不够高,需要先升级内核,我这里说一下ubuntu的升级方法

以下内容需要在两台服务器上都进行执行

* server 阿里云 1M 1c2g ubuntu 20.04
* agent 腾讯云 8M 2c4g ubuntu 20.04

1.升级内核

kernel.ubuntu.com中寻找自己要下载的内核版本,然后点进去,例如我选择的5.17.7



然后服务器上执行dpkg --print-architecture查看一下自己的服务器是amd还是arm等,在上面打开的链接中选择好指定的架构,下载带有下面image和modules、generic的deb文件

  • linux-image-X.Y.Z-generic-*.deb
  • linux-modules-X.Y.Z-generic-.deb

    然后上传到服务器上,当然我们也可以这样
mkdir kernel
cd kernel
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.15.7/amd64/linux-image-unsigned-5.15.7-051507-generic_5.15.7-051507.202112080459_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.15.7/amd64/linux-modules-5.15.7-051507-generic_5.15.7-051507.202112080459_amd64.deb

下载速度有点慢,你可以直接进入我的阿里云盘下载,链接我设置的永久有效

下载完成之后,执行命令:

sudo dpkg --install *.deb
sudo reboot

服务器重启之后再用uname -r查看一下,现在内核版本已经更新到了5.15.7了,服务器内核已经执行成功之后,我们可以安装wireguard了

2.安装wireguard

 sudo apt update
sudo apt upgrade -y
sudo apt install -y iptables wireguard

在我们的server服务器执行hostnamectl set-hostname k3s-master

在我们的agent服务器执行hostnamectl set-hostname k3s-node1

3.安装k3s及配置

接下来,两台服务器都安装k3s

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

稍等一会儿,查看我们的ip addr

///10.43.0.1我们当作server服务器的内网IP
kube-ipvs0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default
inet 10.43.0.1/32 scope global kube-ipvs0
valid_lft forever preferred_lft forever

下面的内容需要分别执行

server服务器

nano /etc/systemd/system/k3s.service

//k3s.service只需要修改ExecStart部分,内网IP10.43.0.1

[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target [Install]
WantedBy=multi-user.target [Service]
Type=notify
EnvironmentFile=/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s \
server --flannel-backend wireguard --tls-san 公网地址,内网地址 --node-ip 内网地址 --node-external-ip 公网地址 --no-deploy servicelb \
--disable traefik
--kube-proxy-arg "proxy-mode=ipvs" "masquerade-all=true" \
--kube-proxy-arg "metrics-bind-address=0.0.0.0" nano /etc/systemd/system/k3s.service.env //然后直接Ctrl+X 按y退出来

获取token

cat /var/lib/rancher/k3s/server/node-token
# 内容类似如下:
K10fc6653356f8b0c457cd1a8e41d87b7d33b49a97f4e6b8qweqweqwewq12788a06e85647454::server:53c2qweqwe2222w4d8145be9e7

agent服务器

nano /etc/systemd/system/k3s.service

//k3s.service只需要修改ExecStart部分

///内网IP我们写成10.43.0.2
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target [Install]
WantedBy=multi-user.target [Service]
Type=notify
EnvironmentFile=/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s agent\
--node-external-ip 公网IP \
--node-ip 内网IP\
--kube-proxy-arg "proxy-mode=ipvs" "masquerade-all=true" \
--kube-proxy-arg "metrics-bind-address=0.0.0.0" 设置当前服务器的设备变量
nano /etc/systemd/system/k3s.service.env # 此处定义集群的api service访问地址以及token内容为:
K3S_URL=https://server的公网地址:6443
K10fc6653356f8b0c457cd1a8e41d87b7d33b49a97f4e6b8qweqweqwewq12788a06e85647454::server:53c2qweqwe2222w4d8145be9e7

然后server服务器和agent服务器都执行

systemctl daemon-reload
systemctl restart k3s

如果长时间Hold不执行下去,Ctrl+C取消,执行systemctl status k3s -r或者ajournalctl -u k3s.service -r查看输出日志

如果报错信息是

Failed to connect to proxy" error="x509: certificate is valid for 10.43.0.1, 127.0.0.1, 172.28.115.105, not xxx.xxx.xxx.xxx(server的公网IP)

先将两个服务器的K3s都停掉,然后全部执行

systemctl stop k3s
cd /var/lib/
rm -rf rancher
reboot

一般重启之后就好了

下面是服务器的端口开发截图

不同云服务器下,ubuntu下开k3s集群的更多相关文章

  1. 腾讯云服务器 - 安装redis3.2.9以及集群

    redis大家都知道,服务器上必不可少的,那么在生产环境下安装的步骤和虚拟机里也是差不多的 官网上最新稳定版是3.2.9,而4.0的更新比较大,但是比几个还是beta版嘛 下载并且上传压缩包至云服务器 ...

  2. SpringBoot之解决云服务器VPS在所处云端集群的内网不能解析域名的问题:java.net.UnknownHostException:abc.cn: Temporary failure in name resolution

    一.起因与原因分析过程 前端小伙伴儿告诉我,说服务器崩了. 请求数据接口,接口有响应,但报的json提示指向:数据库异常错误. 遂登陆云主机查看日志,核心记录显示如下: 2018-11-09 22:1 ...

  3. 如何安装一个高可用K3s集群?

    作者介绍 Janakiram MSV是Janakiram & Associates的首席分析师,也是国际信息技术学院的兼职教师.他也是Google Qualified Developer.亚马 ...

  4. 阿里云服务器 ECS Ubuntu系统安装配置

    1. 登陆服务器 系统开通成功后手机会收到阿里云发来的短信,包含公网IP及root登录密码. WEB管理后台方式 可通过阿里云管理后台选择“连接管理终端…”进行登录 提示输入VNC密码 登录成功后显示 ...

  5. Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)

    现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...

  6. 腾讯云服务器linux Ubuntu操作系统搭建ftp服务器vsftpd

    腾讯云服务器linux Ubuntu操作系统安装ftp服务器vsftpd 操作系统: Ubuntu Server 16.04.1 LTS 64位 下面我将系统重装, 一步一步从头开始,安装FTP服务器 ...

  7. Ubuntu下用hadoop2.4搭建集群(伪分布式)

    要真正的学习hadoop,就必需要使用集群,可是对于普通开发人员来说,没有大规模的集群用来測试,所以仅仅能使用伪分布式了.以下介绍怎样搭建一个伪分布式集群. 为了节省时间和篇幅,前面一些步骤不再叙述. ...

  8. CentOS下Storm 1.0.0集群安装具体解释

    本文环境例如以下: 操作系统:CentOS 6 32位 ZooKeeper版本号:3.4.8 Storm版本号:1.0.0 JDK版本号:1.8.0_77 32位 python版本号:2.6.6 集群 ...

  9. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

随机推荐

  1. Java注解Annotaton

    1.三种基本的Annotaton @Override : 限定某个方法,是重写父类方法 , 该注解只能用于方法 @Deprecated : 用于表示某个程序元素 ( 类 , 方法等 ) 已过时 @Su ...

  2. Vue2手写源码---响应式数据的变化

    响应式数据变化 数据发生变化后,我们可以监听到这个数据的变化 (每一步后面的括号是表示在那个模块进行的操作) 手写简单的响应式数据的实现(对象属性劫持.深度属性劫持.数组函数劫持).模板转成 ast ...

  3. 归约与分组 - 读《Java 8实战》

    区分Collection,Collector和collect 代码中用到的类与方法用红框标出,可从git库中查看 收集器用作高级归约 // 按货币对交易进行分组 Map<Currency, Li ...

  4. [codeforces] 暑期训练之打卡题(一)

    每个标题都做了题目原网址的超链接 Day1<Vanya and Lanterns> 题意: 一条长度为 l 的街道,在这条街道上放置了n个相同的灯,街道一端位置记为0,每个灯的位置在ai处 ...

  5. Fail2ban 命令详解 fail2ban-server

    Fail2ban的服务端操作命令,用于启动一个Fail2ban服务. root@local:~# fail2ban-server --help Usage: /usr/bin/fail2ban-ser ...

  6. Redis集群搭建 三主三从

    Redis集群介绍 Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存.Redis在3.0版本之前只支持单实例模式 虽然支持主从模式,哨兵模式 ...

  7. camunda如何调用HTTP REST(Service Task)服务节点

    ​ Camunda中的Service Task(服务任务)用于调用服务.在Camunda中,可以通过调用本地Java代码.外部工作项.web服务形式实现的逻辑来完成的. 本文重点描述如何使用web服务 ...

  8. Node.js精进(2)——异步编程

    虽然 Node.js 是单线程的,但是在融合了libuv后,使其有能力非常简单地就构建出高性能和可扩展的网络应用程序. 下图是 Node.js 的简单架构图,基于 V8 和 libuv,其中 Node ...

  9. 线上问题定位利器 jprofiler

    1.导出dump windows: jps -l   查看Java进行 jmap -dump:format=b,file=webapi.hprof 20840 查看进程,根据进程号导出hprof文件 ...

  10. SAP Web Dynpro-版本管理

    您可以使用版本管理来管理对象的旧版本,比较版本,也可以重置它们. 在版本管理中,您可以存储ABAP开发对象的不同版本. 在ABAP工作台中,您可以比较不同版本的- 视图 视窗 控制器 您也可以存储对象 ...