前言
部署架构
协议 | 方向 | 端口范围 | 使用的应用程序 | 可被调用的应用 |
---|---|---|---|---|
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
https://www.funtl.com/zh/service-mesh-kubernetes/%E9%AB%98%E5%8F%AF%E7%94%A8%E9%9B%86%E7%BE%A4.html
离线部署
Breeze
https://github.com/wise2c-devops/breeze
容器化部署
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