K8S ? K3S !

K8S 那么麻烦为什么不用 K3S?

本文适合 :

  • 想摆脱 K8S 复杂安装又不得不用 K8S 的开发者
  • 服务器配置不够跑 K8S 的开发者
  • 物联网开发者
  • 需要最低学习成本使用容器编排的开发者
  • 初学 K8S 的新手

K3S

  • 更轻、更简单的 K8S
  • 设计给物联网设备和边缘侧计算使用
  • 边缘侧都能用服务器用了还不直接起飞?- 鲁迅

踩坑开始

歪比歪比(奇怪的服务器)

服务器选择我熟悉的 Centos

内核要求: 3.10.0 也就是阿里云和腾讯云的官方 Centos7.7 / Centos7.6

  1. Centos8 不用尝试了 iptables 的版本太高
  2. 其他内核使用前用 k3s check-config 命令检查
  3. 所有节点机器要在同一个内网环境下,这是K3S的一个bug,集群会以 endpoint 进行连接,而云服务器的 endpoint 是内网ip(阿里云经典网络应该不是 暂未测试)
  4. 主机名带下划线在 k3s 异常
export K3S_NODE_NAME=${HOSTNAME//_/-}

将下划线替换成中划线提供给 k3s 安装脚本

K3S内置 Containerd 但是!作为一个服务器使用自然是要用常见的一点的容器 Docker

curl https://download.daocloud.io/docker/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
curl -fsSL https://get.daocloud.io/docker | bash -s docker --mirror Aliyun
  • Docker 安装和配置加速器(国内源):
  • containerd.io 版本低:
yum -y install https://download.daocloud.io/docker/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
  • 加速器配置:
sudo mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 开机启动
sudo systemctl enable docker

歪比巴卜(K3S 的胜利)

K3S Server 安装

就这么写!都是一点一点查到的经验!

export K3S_NODE_NAME=${HOSTNAME//_/-}
export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
  • --docker使用docker
  • --kube-apiserver-arg service-node-port-range=1-65000节点端口范围1-65000
  • --no-deploy traefik不安装traefik (后续用 rancher )
  • --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666设置kube配置文件到~/.kube/config(和 k8s 路径一致后续会少出问题)

安装 nfs

所有机器:

#所有 node 节点安装 nfs 客户端
yum -y install nfs-utils
systemctl start nfs && systemctl enable nfs

nfs主机:

#master节点安装nfs
yum -y install nfs-utils #创建nfs目录
mkdir -p /nfs/data/ #修改权限
chmod -R 777 /nfs/data #编辑export文件
tee /etc/exports <<-'EOF'
/nfs/data *(rw,no_root_squash,sync)
EOF #配置生效
exportfs -r #启动rpcbind、nfs服务
systemctl restart rpcbind && systemctl enable rpcbind
systemctl restart nfs && systemctl enable nfs

K3S Server 信息

agent 加入集群需要使用

echo "export K3S_TOKEN=$(cat /var/lib/rancher/k3s/server/node-token)"
echo "export K3S_URL=https://$(ifconfig eth0 |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"):6443"

K3S agent

同 server 安装参数,需要先获取到 server 的 K3S_TOKEN 和 K3S_URL

export K3S_TOKEN=XXXXXX
export K3S_URL=XXXXXX
export K3S_NODE_NAME=${HOSTNAME//_/-}
export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

一大波僵尸即将来袭( rancher 安装)

rancher 版本: Rancher2.3+

docker run -d -v /data/docker/rancher-server/var/lib/rancher/:/var/lib/rancher/ --restart=unless-stopped --name rancher-server -p 9443:443 rancher/rancher:stable
echo https://$(curl http://ip.cip.cc/):9443
  • 主机 9443 端口代理 rancher https 使用的 443 端口
  • rancher 界面直接导入 K3S 集群, 把 K3S 集群当成 K8S 使用

Docker + K3S + nfs 客户端 一键安装脚本

#!/bin/sh
set -e
# 在线安装脚本 # k3s 不建议安装swap 系统内存小的时候没有swap会卡死
if [ ! -f "/var/swap" ];then
echo "create swap"
dd if=/dev/zero of=/var/swap bs=1024 count=8192000
mkswap /var/swap
mkswap -f /var/swap
swapon /var/swap
echo "/var/swap swap swap defaults 0 0" >> /etc/fstab
fi # 判断是否安装 docker
if [ `command -v docker` ];then
echo 'docker has installed'
else
echo 'install docker'
curl https://download.daocloud.io/docker/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
yum -y install https://download.daocloud.io/docker/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
curl -fsSL https://get.daocloud.io/docker | bash -s docker --mirror Aliyun
# centos7 的内核经过 k3s 检查都有这个问题
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
fi
# 添加加速源
sudo mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"]
}
EOF
# 启动
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker # 判断是否安装k3s
if [ `command -v k3s` ];then
echo 'k3s has installed'
else
# 本地安装k3s其他参数通过外部传入
# 下划线节点名不被支持
export K3S_NODE_NAME=${HOSTNAME//_/-}
export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
fi #所有node节点安装nfs客户端
yum -y install nfs-utils
systemctl start nfs && systemctl enable nfs
echo 'finish'
echo 'need reboot'
echo "export K3S_TOKEN=$(cat /var/lib/rancher/k3s/server/node-token)"
echo "export K3S_URL=https://$(ifconfig eth0 |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"):6443"

K8S ? K3S !的更多相关文章

  1. Dapr学习(2)之Rancher2.63(k8s&k3s)环境安装Dapr

    前言:前面写过一篇关于dapr入门安装的文章,self-host模式,使用docker安装的本地调试环境,并进行了测试:本篇介绍k8s方式安装dapr,此文主要基于的环境是k3s,通过rancher2 ...

  2. Rancher On K3s 高可用架构部署

    Rancher 推荐部署架构 k3s 模式 RKE 和 k8s 模式 备注: 我对 RKE 的理解就是 Ansible + kubeadm 的打包,首先 rke 需要到每一个节点都可以免密 ssh , ...

  3. 常用docker管理UI

    1. HumpBacks 特性 Web UI Supporting, Easy to use. Container Grouping and Isolation. Container Upgrades ...

  4. docker管理监控方案

    docker相关管理可分为四类:docker基础功能.docker监控.docker集群管理和docker系统认证管理.docker管理的基础或信息来源都是docker命令行或docker API. ...

  5. .NetCore 配合 Gitlab CI&CD 实践 - 单体项目

    前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 ...

  6. .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目

    系列目录     [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...

  7. .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目

    系列目录     [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...

  8. K8s 还是 k3s?This is a question

    本文来自:Rancher Labs 自k3s问世以来,社区里有许多小伙伴都问过这样的问题"除了中间的数字之外,k3s和K8s的区别在哪里?","在两者之间应该如何选择?& ...

  9. 仅需60秒,使用k3s创建一个多节点K8S集群!

    作者: Dawid Ziolkowski丨Container Solution云原生工程师 最近,我一直在Kubernetes上进行各种测试和部署.因此,我不得不一次又一次创建和销毁Kubernete ...

随机推荐

  1. 本地Git绑定Gitee仓库

    前言 Window的小伙伴如果还没在本地配好Git环境可以参考:https://www.cnblogs.com/poloyy/p/12185132.html 创建Gitee仓库 Gitee绑定本地Gi ...

  2. MySql笔记(二)

    目录 MySQL笔记(二) 一幅画,一次瞬间的回眸,就在那次画展上,那个眼神,温柔的流转,还是那干净的皮鞋,一尘不染,俊朗的眉宇性感的唇,悄悄走近,牵手一段浪漫 MySQL笔记(二) 13.条件查询 ...

  3. Scrapy的基本使用

    爬取:http://quotes.toscrape.com 单页面 # -*- coding: utf-8 -*- import scrapy class QuoteSpider(scrapy.Spi ...

  4. mysql中更改字符集为utf8&&mysql中文输入不了问题解决

    写给TT:对不起啦!! 嗯,输入不了中文,大多数问题是mysql的字符集设置的问题,当然,别的问题也有可能, 这里我们用两种方法设置mysql的字符集,图形化工具和命令行的方式(一种操作完即可) 一, ...

  5. 玩转Django2.0---Django笔记建站基础九(一)(Auth认证系统)

    第九章 Auth认证系统 Django除了有强大的Admin管理系统之外,还提供了完善的用户管理系统.整个用户管理系统可分为三大部分:用户信息.用户权限和用户组,在数据库中分别对应数据表auth_us ...

  6. 为磁盘文件定义路由(Defining Routes for Disk Files) |对磁盘文件进行路由请求 |

  7. if continue的用法(跳过本次循环,执行下一个循环)

    Python continue 语句跳出本次循环 当需要跳过本次循环的时候,使用continue能跳过本次循环,直接下一个循环 如下脚本: for url in alllink: if url == ...

  8. Centos7使用docker搭建Sentry

    1.安装docker Sentry 是一款基于 Django实现的错误日志收集和聚合的平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node.js, php,ru ...

  9. Kubernetes 服务自动发现CoreDNS

    前言 Service服务,是一个概念,逻辑通过selector标签代理指定后端pod.众所周知,pod生命周期短,状态不稳定,pod错误异常后新生成的Pod IP会发生变化,之前Pod的访问方式均不可 ...

  10. python实现一个客户端与服务端的通信

    函数介绍 Socket对象方法: 服务端: 函数 描述 .bind() 绑定地址关键字,AF_INET下以元组的形式表示地址.常用bind((host,port)) .listen() 监听TCP,可 ...