准备工作与K8s部署

准备工作

  • Linux操作系统
    • Ubuntu、Debian、CentOS、Fedora、RHEL、openSUSE/SLES 等主流Linux发行版
    • Fedora CoreOS、VMware Photon OS等“容器专用”OS
  • 足够的RAM和存储:物理机部署时推荐只运行K8s相关程序
  • Internet连接,或能够访问特定registry(需要提前搭好registry并在registry中添加K8s组件镜像)
  • 物理机之间的网络联通(Worker访问Control的API、Worker与Worker之间的网络甚至存储共享)
  • 安装好部署工具 见下文
  • 安装好CRI-O标准兼容的容器工具,docker、podman、containerd等均可
    • podman:绝对开源,无服务(无daemon),很适用于Rootless Container模式(低权限),仅支持Linux容器
    • docker:最主流,有商业版,传统daemon模式(需要root/管理员权限),支持Linux容器和Windows容器
    • containerd:最基础,绝对开源,最标准,是K8s、K3s等默认的CRI-O容器工具,支持Linux容器和Windows容器
  • 可以使用带GUI的容器工具
    • Podman Desktop
    • Docker Desktop
    • Rancher Desktop

该选哪种部署方式?

  • 大型生产环境:完整的K8s集群
    • 使用 kubeadm 工具进行部署
    • 有两种节点类型:Control Plane(控制平面,也叫Master)和Worker
    • 适合物理机部署
    • 需要高配置(稳定运行最好2thread+8GB)
    • 最好多个物理机(Control Plane和Worker隔离,应用容器只部署在Worker上),最好3台以上(1 Control + 2 Worker)
  • 小型生产环境:K3s
    • 由rancher公司开发维护
    • 直接使用k3s工具进行部署
    • 有两种节点类型Server和Agent,默认单节点Server
    • 裸机部署和虚拟机部署均可
    • 配置需求低(1thread+512MB足够)
  • 本地测试环境:minikube
    • 由K8s官方维护
    • 不建议暴露在公网 很多默认配置都是以localhost或内网为基础的
    • 默认是单节点 可以扩展为多节点
  • 其他:Microk8s,Canonical公司开发与维护,使用snap部署

部署K3s

  • 如果需要关闭已有的K3s集群:k3s-killall.sh

  • 安装

    • 主节点(Server)
      • curl -sfL https://get.k3s.io | sh -
      • 默认安装的selinux规则太旧 手动安装新的。以CoreOS为例:sudo rpm-ostree install https://github.com/k3s-io/k3s-selinux/releases/download/v1.2.stable.2/k3s-selinux-1.2-2.el8.noarch.rpm
    • 子节点(Agent)
      • 要先找主节点的token,再记录主节点的ip地址
        • sudo cat /var/lib/rancher/k3s/server/node-token
        • ip addr
      • 然后使用安装命令,加入特殊变量
        • curl -sfL https://get.k3s.io | K3S_TOKEN="<主节点token值>" K3S_URL="https://<主节点ip地址>:6443" sh -
  • systemd service文件位置

    • 主节点:/etc/systemd/system/k3s.service
    • 子节点:/etc/systemd/system/k3s-agent.service
  • 升级

    • 依然使用curl在线获取升级脚本,版本号可去 Releases · k3s-io/k3s 查看,使用环境变量 INSTALL_K3S_VERSION 指定新版本
    • 主节点
      • curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=<版本号> sh -
    • 子节点
      • curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=<版本号> K3S_TOKEN="<主节点token值>" K3S_URL="https://<主节点ip地址>:6443" sh -

部署Minikube

  • 如果要删掉已有的Minikube集群
    • 停止:minikube stop
    • 删除:minikube delete --all
  • 借助containerd和podman,启动新集群
    • minikube start --driver=podman --container-runtime=containerd --listen-address=0.0.0.0
评论