前言🌲K8s集群部署 - 图2

部署架构

  • 无中心节点架构
    • GlusterFS
    • Teradata(Mpp)
  • 有中心节点架构
    • HDFS
    • K8s

      K8s必要端口说明

      1. 控制面板节点(Master)

协议 方向 端口范围 使用的应用程序 可被调用的应用
TCP Inbound 6443* Kubernetes API server All
TCP Inbound 2379-2380 etcd server client API kube-apiserver, etcd
TCP Inbound 10250 Kubelet API Self, Control plane
TCP Inbound 10251 kube-scheduler Self
TCP Inbound 10252 kube-controller-manager Self

2. 工作节点(Node)

协议 方向 端口范围 使用的应用程序 可被调用的应用
TCP Inbound 10250 Kubelet API Self, Control plane
TCP Inbound 30000-32767 NodePort Services All

K8s部署工具对比

社区知名本地集群部署环境的比较,以下对比仅限于功能性和影响力方面的对比,性能方面目前缺乏比较完善的数据支撑(截止 2020.04.15)。

产品 minikube 1.9.2 kind 0.8.1 MicroK8s 1.18 K3s 1.17.4
出品方 Kubernetes 官方 Kubernetes SIG Ubuntu Rancher
推荐/认证 官方推荐 官方推荐 官方认证
社区热度 17.9k ⭐️ 5.2k ⭐️ 3k ⭐️ 12.3k ⭐️
运行环境 虚拟机 容器环境 虚拟机 裸金属 / 虚拟机
支持硬件架构 AMD64 AMD64(1.0GA考虑支持ARM) AMD64 AMD64, ARMv7, ARM64
支持操作系统 Linux, macOS, Windows Linux, macOS, Windows Linux, macOS, Windows Linux
支持容器运行时 Docker, CRI-O, containerd, gvisor Docker(1.0GA考虑支持其它) containerd Docker, containerd
运行需要的内存 2 GB 8 GB 4 GB 512 MB
是否需要Root / / / ❗️Known Issue
多集群支持 ✅ 通过切换Profile ✅ 即多个容器 ✅ 通过 K3s in Docker
多节点集群支持 ❓实验中的特性 ✅ 创建很简单 ✅ 连接多个MicroK8s节点 ✅ 通过多个 K3s Agent 支持
主节点HA支持 ✅ 创建很简单 ✅ 通过 K3s Master HA 支持
应用插件支持 ✅ 丰富的Addons ❌ 全靠自己装 ✅ 丰富的Addons ❌ 全靠自己装
特点综述 “官方大儿子”:出道很早,功能强大,各种环境的支持比较充分;但略显“笨重”,对多节点特性支持差 “官方社区新贵”:使用和配置都很灵活,体验 K8s 新特性的首选;但定位非生产环境,也暂未考虑应用插件 “Ubuntu 生态的挑战者”:相对小众,但整体功能比较完整;整体比较“中庸”,需要结合实践业务场景来应用 “小型 K8s 的代表”:小小的身材却有大大的力量,优势劣势都比较突出;目前主要的工作领域偏重边缘云

K8s包管理工具对比

我们先一起看一些现在社区中常见的一些 K8s “应用”的组织形式,并进行一些基础的对比(截止到 2020.04.23)。

产品 kustomize 3.5.4 Helm 3.2.1 kapp 0.24.0 OAM v1alph2
出品方 Kubernetes官方社区 CNCF云原生基金会 社区k14s团队 微软 + 阿里巴巴
社区热度 5.2k ⭐️ 16.9k ⭐️ 300+ ⭐️ 1.1k ⭐️(Rudr: 1.4k ⭐️)
应用仓库 官方:Helm Hub、CNCF Hub、各类三方仓库(如:阿里App Hub)
实现形式 基于Go跨平台命令行工具 基于Go跨平台命令行工具 基于Go跨平台命令行工具 OAM CRDs
输入内容 kustomization引导文件,资源定义文件,及相关功能文件 Helm Chart(Helm应用包,K8s YAML资源文件组) K8s YAML资源文件 OAM应用定义文件(即符合OAM标准的资源文件)
输出内容 K8s YAML资源文件 可输出K8s YAML资源文件 / /
文件组织 树状组织:大致可分为一个基础层(存放基础资源)和多个叠加层(存放覆盖基础资源的补丁) Helm Chart特定的包结构组织 K8s YAML资源文件目录 同 K8s YAML资源文件目录
功能特点 以K8s原生资源文件为基础,附加了大量数据组合、转化的功能 充分利用Go Template进行模版化的资源文件生成;比较完整的包管理机制、全面的部署流程 专注部署的工作流:部署内容差分、状态监测、交互式执行 业内首个云原生应用标准定义与架构模型:提出将应用描述为:应用组件 + 应用特征

Kubernetes集群部署

*二进制部署
Saltstack部署
https://github.com/unixhot/salt-kubebin
Ansible部署
https://github.com/lizhenliang/ansible-install-k8s
kubeasz
https://github.com/easzlab/kubeasz
二进制安装k8s集群
https://mp.weixin.qq.com/s/tU7DJXHL4bIyJETmtl0cYA
跟我一步步二进制部署高可用kubernetes集群
https://mp.weixin.qq.com/s/MOo9wTlQRdzEWwr0nA204g
kubernetes一键高可用安装
https://github.com/fanux/sealos
🌲K8s集群部署 - 图3

https://www.funtl.com/zh/service-mesh-kubernetes/%E9%AB%98%E5%8F%AF%E7%94%A8%E9%9B%86%E7%BE%A4.html
image.png

离线部署
Breeze
https://github.com/wise2c-devops/breeze
🌲K8s集群部署 - 图5
容器化部署

RKE部署Kubernetes集群高可用架构
https://www.yuque.com/liweiming/xzgi37/tth7l6
kubeadm
https://www.yuque.com/liweiming/k8s/bdl9um
kubernetes管理平面
rancher
https://www.rancher.cn/
wayne
https://360yun.org
https://github.com/Qihoo360/wayne
kubesphere
https://kubesphere.io/
https://kubesphere.com.cn/docs/zh-CN/installation/all-in-one/

参考

语雀:使用Helm工具链安装并管理K8s应用
https://www.yuque.com/serviceup/k8s-hands-on/helm
语雀:使用kind和k9s创建并管理本地K8s集群
https://www.yuque.com/serviceup/k8s-hands-on/kind-k9s