K3S-轻量化的k8s

2021/03/30

K3S-轻量化的k8s

参考资料

  • 官网地址:https://k3s.io/
  • 下载地址:https://github.com/k3s-io/k3s/releases/tag/v1.27.4+k3s1
  • 文档地址:https://docs.k3s.io/
    • https://docs.k3s.io/zh/
    • https://docs.rancher.cn/docs/k3s/quick-start/_index
    • 部署和访问 Kubernetes 仪表板(Dashboard)https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/web-ui-dashboard/
    • Yaml文件编写 https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/
  • 实践 kubernetes轻量级生产部署方案以及基础解决方案 https://zhuanlan.zhihu.com/p/624560065
  • K3s快速搭建入门 https://www.yii666.com/blog/372297.html
  • 一文搞定全场景K3s离线安装 https://www.sohu.com/a/447244436_120435200
  • K3S+Rancher之在线安装 https://code84.com/776934.html

k3s简介

K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。具有以下增强功能:

  • 打包为单个二进制文件。
  • 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。
  • 封装在简单的启动程序中,通过该启动程序处理很多复杂的 TLS 和选项。
  • 默认情况下是安全的,对轻量级环境有合理的默认值。
  • 添加了简单但功能强大的batteries-included功能,例如:本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik Ingress controller。
  • 所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中,使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。
  • 最大程度减轻了外部依赖性,K3s 仅需要 kernel 和 cgroup 挂载。

网络:

  • 默认情况下,K3s 将以 flannel 作为 CNI 运行,使用 VXLAN 作为默认后端。
  • 启动 server 时,默认情况下会部署 Traefik作为IngressController,接管集群内80和443的流量。
  • K3s 提供了一个名为Klipper Load Balancer的负载均衡器,它可以使用可用的主机端口

一、在线部署单点k3s

1.准备工作
1.1关闭防火墙和selinux

1.2检查版本镜像是否可用
登陆http://mirror.cnrancher.com/,打开对应版本的文本文件确认是否正常显示

2.安装
2.1 默认情况下使用内置SQLite数据库作为存储,containerd作为容器运行时。

# 指定国内镜像源INSTALL_K3S_MIRROR和版本INSTALL_K3S_VERSION
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.6+k3s1 sh -
# 最小化安装,关闭traefik、servicelb、local storage
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.6+k3s1 sh -s - --disable traefik --disable servicelb --disable local-storage
# 使用外部mysql作为存储,添加datastore参数
--datastore-endpoint="mysql://username:password@tcp(x.x.x.x:3306)/database_name"
# 使用docker作为容器运行时
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.6+k3s1 sh -s - --docker --disable traefik  --disable servicelb --disable local-storage

2.2使用docker作为容器进行时

编辑/usr/lib/systemd/system/docker.service文件,修改驱动为cgroupfs  

systemctl daemon-reload && systemctl restart docker
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.6+k3s1 sh -s - --docker --disable traefik  --disable servicelb --disable local-storage

3.卸载

cd /usr/local/bin  
sh k3s-uninstall.sh  

4.app用户增加kubectl命令
chmod a+r /etc/rancher/k3s/k3s.yaml

二、在线部署集群k3s

1.申请vip用于高可用主备切换、部署keepalived

  • 移动云上参考:https://ecloud.10086.cn/op-help-center/doc/article/24927
  • 移动云上参考:https://ecloud.10086.cn/op-help-center/doc/article/52908

2.三个master节点部署etcd集群

3.部署K3S集群master(使用外置的etcd存储部署)

#三个master节点依次执行
curl -sfL http://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.6+k3s1 sh -s - server --disable traefik  --disable servicelb --disable local-storage --datastore-endpoint="http://1.1.1.1:2379,http://1.1.1.2:2379,http://1.1.1.3:2379" --tls-san 1.1.1.200 --token secret
#如果历史版本在线无法下载安装,去掉版本,默认装最新release
curl -sfL http://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server --disable traefik  --disable servicelb --disable local-storage --datastore-endpoint="http://1.1.1.1:2379,http://1.1.1.2:2379,http://1.1.1.3:2379" --tls-san 1.1.1.200 --token secret
注:1.1.1.200为haproxy上配置的虚地址

或者使用k3s自带嵌入etcd部署

#第一个master节点执行
curl -sfL http://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.6+k3s1 K3S_TOKEN=SECRET sh -s - server --disable traefik  --disable servicelb --disable local-storage --cluster-init
#其他master节点执行
curl -sfL http://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.6+k3s1 K3S_TOKEN=SECRET sh -s - server --server https://x.x.x.x:6443 --disable traefik  --disable servicelb --disable local-storage
x.x.x.x为第一个master节点ip

4.部署node节点加入集群

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.6+k3s1  K3S_URL=https://1.1.1.200:6443 K3S_TOKEN=secret sh -s - --kubelet-arg container-log-max-files=5 --kubelet-arg container-log-max-size=100Mi

5.设置系统服务

6.设置开机自启

三、离线部署集群k3s(k3s-airgap-images-amd64.tar、k3s、install.sh)

  • 文档:https://docs.k3s.io/zh/installation/airgap#%E6%89%8B%E5%8A%A8%E9%83%A8%E7%BD%B2%E9%95%9C%E5%83%8F
  • 下载:https://github.com/k3s-io/k3s/releases/tag/v1.22.6%2Bk3s1

1.三个节点部署etcd集群

2.申请vip用于高可用主备切换、部署keepalived

  • 移动云上参考:https://ecloud.10086.cn/op-help-center/doc/article/24927
  • 移动云上参考:https://ecloud.10086.cn/op-help-center/doc/article/52908

3.master节点执行

# 上传k3s-airgap-images-amd64.tar、k3s、install.sh 至/opt
mkdir -p /var/lib/rancher/k3s/agent/images/
cp /opt/k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
cp /opt/k3s /usr/local/bin/
chmod 755 /opt/install.sh 
chmod 755 /usr/local/bin/k3s
cd /opt 
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --token=secret --tls-san=1.1.1.200 --disable=traefik  --disable=servicelb --disable=local-storage' K3S_DATASTORE_ENDPOINT='http://1.1.1.1:2379,http://1.1.1.2:2379,http://1.1.1.3:2379' ./install.sh
## 查看状态
systemctl status k3s

4.部署node节点加入集群

mkdir -p /var/lib/rancher/k3s/agent/images/
cp /opt/k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
cp /opt/k3s /usr/local/bin/
chmod 755 /opt/install.sh
chmod 755 /usr/local/bin/k3s
cd /opt
INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://1.1.1.200:6443 K3S_TOKEN=secret ./install.sh
## 查看状态
systemctl status k3s-agent

5.设置系统服务

6.设置开机自启

7.删除node https://www.cnblogs.com/John-2011/p/14984900.html

master上执行:
k3s kubectl delete node nodeName
node上卸载:
/usr/local/bin/k3s-agent-uninstall.sh 

8.配置私有镜像仓库 https://forums.rancher.cn/t/k3s-containerd/703 可以将 Containerd 配置为连接到私有镜像仓库,并在节点上使用私有镜像仓库拉取私有镜像
启动时,K3s 会检查 /etc/rancher/k3s/ 中是否存在 registries.yaml 文件,并指示 containerd 使用该文件中定义的镜像仓库。如果你想使用私有的镜像仓库,你需要在每个使用镜像仓库的节点上以 root 身份创建这个文件

## 新增私有仓库配置
vi /etc/rancher/k3s/registries.yaml
mirrors:
  hub.wds.com:
    endpoint:
      - "https://hub.wds.com"
configs:
  "hub.wds.com":
    auth:  
      username: name
      password: pwd
    tls:
      insecure_skip_verify: true

## 配置hosts域名解析
vi /etc/hosts
hub_ip hub.wds.com 

四、问题记录

1.历史版本v1.22.6+k3s1在线无法下载安装,去掉版本参数,默认安装最新稳定版本 v1.27.4-k3s1

2.Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image “rancher/mirrored-pause:3.6”: failed to pull image “rancher/mirrored-pause:3.6”: failed to pull and unpack image “docker.io/rancher/mirrored-pause:3.6”: failed to copy: httpReadSeeker: failed open: failed to do request: Get “https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/62/6270bb605e12e581514ada5fd5b3216f727db55dc87d5889c790e4c760683fee/data?verify=1694071334-H3wNn5tn6QRo%2BisJZbghFrQPfkU%3D”: net/http: TLS handshake timeout k8s 1.26中启用了CRI sandbox(pause) image的配置支持 https://blog.csdn.net/Haskei/article/details/128474534
集群安装成功,coredns创建失败,镜像rancher/mirrored-pause:3.6拉取失败

3.离线安装 preparing server: bootstrap data already found and encrypted with different
部署集群用了etcd,token信息、节点信息存在了etcd里,安装失败后要删etcd数据

Post Directory

扫码关注公众号:暂无公众号
发送 290992
即可立即永久解锁本站全部文章