NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

  • 云原生

  • Kubernetes

  • KubeSphere

    • 最佳实践
      • 前期准备
      • 所有节点-安装依赖
      • 主节点-下载KubeKey
      • 主节点-挂载/var/lib/docker
      • 主节点-配置文件
        • 生成
        • 修改
        • 安装
      • 最小化安装完成
      • 扩展
        • 应用商店
        • 升级
        • 配置镜像加速
      • 卸载
    • 安装中间件
    • 路由应用(反向代理)
    • DevOps
  • K3S

  • 笔记

  • PVE

  • 维修

  • DevOps

  • 云服务

  • 路由器

  • Hyper-V

  • Windows

  • macOS

  • 运维
  • KubeSphere
NipGeihou
2022-10-25
目录

最佳实践

Docs / 文档 / 在 Linux 上安装 KubeSphere / 简介 / 多节点安装,参考 https://kubesphere.io/zh/docs/v3.4/installing-on-linux/introduction/multioverview/ (opens new window)

# 前期准备

  • 机器:4C8G * 3
  • 系统:Ubuntu Server 20.04 LTS 64bit
  • 内网互通(SSH)
  • 开放端口:30000-32767(内网开放)

# 所有节点 - 安装依赖

确保所有节点都有 sudo / curl / openssl / tar 命令,没有则自行 install,ubuntu 默认都有。

apt install -y socat
apt install -y conntrack
apt install -y ebtables
apt install -y ipset

# 访问 GitHub/Googleapis 受限的机器执行
export KKZONE=cn


笔记

由于 k8s 在 v1.24 + 默认不再支持 docker 作为容器运行时,而 KubeSphere 目前(3.4)默认仍使用 Docker 作为容器运行时,需要另行安装 containerd 作为容器运行时。

安装 containerd

官方快速开始:containerd/docs/getting-started.md at main · containerd/containerd (opens new window)

提示

containerd 官方的快速开始已经非常清晰,建议直接看官方文档操作。

# 安装 containerd
# 下载 containerd,https://github.com/containerd/containerd/releases
wget https://github.com/containerd/containerd/releases/download/v1.6.24/containerd-1.6.24-linux-amd64.tar.gz
# 解压 到/usr/local
tar Cxzvf /usr/local containerd-1.6.24-linux-amd64.tar.gz

# 下载 https://raw.githubusercontent.com/containerd/containerd/main/containerd.service到 /etc/systemd/system (Ubuntu的systemd,与官方文档不同)
curl -o /etc/systemd/system/containerd.service https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
# 运行
systemctl daemon-reload
systemctl enable --now containerd


# 安装 runc
# 下载 runc,https://github.com/opencontainers/runc/releases
wget https://github.com/opencontainers/runc/releases/download/v1.1.9/runc.amd64
# 安装
install -m 755 runc.amd64 /usr/local/sbin/runc

# 安装 CNI插件
# 下载,https://github.com/containernetworking/plugins/releases
wget https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz
# 安装
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.3.0.tgz

设置 容器运行时

参考:容器运行时 | Kubernetes (opens new window)

# 生成 containerd 默认配置
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# 重启
systemctl enable containerd && systemctl restart containerd

# 安装 crictl,使得containerd像docker一个使用
# 参考:https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md
# 下载:https://github.com/kubernetes-sigs/cri-tools/releases
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.28.0/crictl-v1.28.0-linux-amd64.tar.gz
tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
# 设置 默认连接到containerd
cat > /etc/crictl.yaml << EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: false
pull-image-on-create: false
EOF
# 检查,类似于 docker ps的输出
crictl ps


参考:手摸手带你撸没有 docker 的 kubernetes 集群 - KubeSphere 开发者社区 (opens new window)

# 主节点 - 下载 KubeKey

最新版本参考官方文档的「下载 KubeKey」

# 国内镜像似乎限速1MB/s,有条件还是用原版快,
export KKZONE=cn

# VERSION的版本在https://github.com/kubesphere/kubekey/releases找最新的
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.10 sh -

chmod +x kk

# 主节点 - 挂载 /var/lib/docker

/var/lib/docker 路径主要用于存储容器数据,在使用和操作过程中数据量会逐渐增加。因此,在生产环境中,建议为 /var/lib/docker 单独挂载一个硬盘。

笔记

可选操作

# 主节点 - 配置文件

# 生成

安装最新版的 kubesphere 和最新(支持)的 Kubernetes,执行后得到 config-sample.yaml

# 生成 最新版的kubesphere和默认的Kubernetes 配置
./kk create config --with-kubesphere

# 生成 最新版的kubesphere和指定版本的Kubernetes
# 查看kubesphere的最新版,https://github.com/kubesphere/kubesphere/releases
./kk version --show-supported-k8s # 先看看支持的最新版本是多少,以及文档中kubesphere的[支持矩阵]
./kk create config --with-kubernetes v1.26.5 --with-kubesphere v3.4.0

# 修改

  • hosts :把主、从服务器信息都写上
  • etcd :主节点主机名
  • control-plane :主节点主机名
  • worker :(主、)从节点主机名
  • controlPlaneEndpoint - address :填上主节点的内网 ip,不填好像 hosts 不会生成 lb.kubesphere.local 映射,从而导致重启后不可用(问题原因为 PVE 的 cloud-init 默认会接管 hosts)
  • network :修改 CIDR 避免与其他集群冲突
    • kubePodsCIDR :
    • kubeServiceCIDR

# 安装

./kk create cluster -f config-sample.yaml

执行脚本,脚本会连上节点服务器安装相应软件。

# 最小化安装完成

如无意外,至此已成功默认最小化安装的 KubeSphere。

# 扩展

# 应用商店

官方文档路径: Docs / 文档 / 启用可插拔组件 / KubeSphere 应用商店

扩展应用仓库:

https://charts.bitnami.com/bitnami

image-20221027112400593

使用

image-20221027112713274

image-20221027112735777

操作与应用商店类似

# 升级

  1. 更新 KubeKey

参考:使用 KubeKey 升级 (opens new window)(此地址具有历史局限性,需自行到 kubesphere 官网寻找最新的地址)

通过默认的配置安装后的 Kubernetes 是 v1.23 的,而一些中间件(如 ECK)要求版本在 v1.24-v1.26 因此需要将 Kubernetes 的版本升级。

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
# 当前最新VERSION使用https://github.com/kubesphere/kubekey/releases中带Latest标签的版本

注意

  • 确保 kk(KubeKey) 的版本是最新的,否则可能不支持更新到新的 kubesphere

  • 值得注意的是,KubeSphere v3.4 支持的 v1.24 + 并不是完美支持,「带星号的版本可能出现边缘节点部分功能不可用的情况。」,如果需要边缘节点,建议不要升级。

  • v1.24 起移除对 Dockershim 的支持,需要另行安装 cri-dockerd,也是因为这个原因,KubeSphere 推荐的版本是 v1.23.x

  1. 选择要升级的 kubernetes 版本

由 KubeKey (opens new window) 可知 KubeSphere v3.4 最高支持的 K8S 版本为 v1.26.x ,保守起见,这里我选择更新到 v1.24 。

./kk version --show-supported-k8s
# 这里我选择了v1.24.14
  1. 选择要升级的 kubesphere 版本

升级 kubesphere 需参考官方文档的升级指南,本段参考文中讲到,升级到 v3.4,需要有一个运行 KubeSphere v3.3.x 的集群。如果您的 KubeSphere 是 v3.2.x 或更早的版本,请先升级至 v3.3.x。

v3.2.x -> v3.3.x
v3.3.x -> v3.4.x

笔记

  • 目前已知的一种查看 KubeSphere 的方式是,在 WEB 管理的 /dashboard 页面中的平台版本中查看。
  • ./kk upgrade 的时候也会提示,只要不 Continue 也是一种查看版本号的方式
Upgrade Confirmation:
kubernetes version: v1.26.5 to v1.26.5
kubesphere version: v3.4.1 to v3.4.1
  1. 升级
# 更新kubernetes的时候 需要指明kubesphere版本,即便不更新也要,否则他默认降级kubesphere
./kk upgrade --with-kubernetes v1.24.14 --with-kubesphere v3.4.0 -f config-sample.yaml
  • --with-kubernetes :必填,要升级到 kubernetes 版本,如果不更新也要填当前版本号
  • --with-kubesphere :必填,要升级到 kubesphere 版本,如果不更新也要填当前版本号
  • config-sample.yaml :必填,节点配置文件

# 配置镜像加速

提示

并不能直接在 kubesphere 中设置,需修改节点的 docker 配置

# 卸载

./kk delete cluster -f config-sample.yaml
上次更新: 2024/08/11, 01:06:54
ELK(ECK)
安装中间件

← ELK(ECK) 安装中间件→

最近更新
01
iSCSI服务搭建
05-10
02
磁盘管理与文件系统
05-02
03
网络测试 - iperf3
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式