主要组件版本#
| 组件 | 版本 | 发布时间 |
|---|---|---|
| kubernetes | v1.31.1 | 2020-01-22 |
| etcd | 3.5.16 | 2019-10-24 |
| containerd | 1.7.22 | 2020-02-07 |
| runc | 1.1.15 | 2019-12-23 |
| cilium | v1.16.2 | 2020-01-27 |
| coredns | 1.9.4 | 2019-12-20 |
| dashboard | 1.5.0 | 2020-02-06 |
| k8s-prometheus-adapter | v0.12.0 | 2019-04-03 |
| prometheus-operator | v0.76.2 | 2020-01-13 |
| prometheus | v2.54.1 | 2020-01-06 |
| grafana | 11.2.0 | - |
| nginx | 1.27.2 | - |
| nerdctl | v1.7.7 | - |
| elasticsearch | 8.5.1 | - |
重要提示#
为了减少部署过程因为环境导致的操作失败,这里建议最好使用 Debian 12 操作系统进行安装。Debian 系统也是企业首选的操作系统,宇宙最动用的就是 Debian 系统。
另外,需要确保所有节点可正常访问公网。如果访问公网,尤其是国外网站的网速快就更好了,否则下载速度可能很慢,而且容易出现下载超时。
Kubernetes 节点配置#
学习用的生产级别的 Kubernetes 集群部署配置要求如下:
| 节点类型 | 最低配置 |
|---|---|
| Master 节点 | 2C4G,50G 硬盘空间 |
| Worker 节点 | 1C2G,50G 硬盘空间 |
主要配置策略#
kube-apiserver#
使用节点本地 nginx 4 层透明代理实现高可用;
关闭非安全端口 8080 和匿名访问;
在安全端口 6443 接收 https 请求;
严格的认证和授权策略(x509、Token、RBAC);
开启 bootstrap token 认证,支持 kubelet TLS bootstrapping;
使用 https 访问 kubelet、etcd,加密通信;
kube-controller-manager#
2 节点高可用;
关闭非安全端口,在安全端口 10252 接收 https 请求;
使用 kubeconfig 访问 apiserver 的安全端口;
自动 approve kubelet 证书签名请求(CSR),证书过期后自动轮转;
各 controller 使用自己的 ServiceAccount 访问 apiserver;
提示:kube-controller-manager、kube-scheduler 组件生产环境建议 3 节点高可用。有些企业为了节省资源,配置的 2 节点高可用。本套课程,为了减轻你的部署成本,采用了 2 节点高可用。
kube-scheduler#
2 节点高可用;
使用 kubeconfig 访问 apiserver 的安全端口;
kubelet#
使用 kubeadm 动态创建 bootstrap token,而不是在 apiserver 中静态配置;
使用 TLS bootstrap 机制自动生成 client 和 server 证书,过期后自动轮转;
在 KubeletConfiguration 类型的 JSON 文件配置主要参数;
关闭只读端口,在安全端口 10250 接收 https 请求,对请求进行认证和授权,拒绝匿名访问和非授权访问;
使用 kubeconfig 访问 apiserver 的安全端口;
kube-proxy#
使用 kubeconfig 访问 apiserver 的安全端口;
在 KubeProxyConfiguration 类型的 JSON 文件配置主要参数;
使用 ipvs 代理模式;
集群插件(Addons)#
DNS:使用功能、性能更好的 coredns;
Dashboard:支持登录认证;
Metric:metrics-server,使用 https 访问 kubelet 安全端口;
Log:Elasticsearch、Fluent、Kibana;
Registry 镜像库:docker-registry、harbor;