手动搭建k8s-1-10-4高可用集群(前言以及准备)
文章发布较早,内容可能过时,阅读注意甄别。
# 1,感谢原作者。
某日下午,打算再一次手动搭建 k8s 的 1.10 版本,在网上搜索的时候,发现了如下开源地址:https://github.com/opsnull/follow-me-install-kubernetes-cluster ,当即就被其吸引,然后就给身边小伙伴进行分享,我当时还打趣对他说,我有一个预感了,他说什么预感,我说我预感今天晚上将是一个不眠夜了。
说这话一方面是因为我看到教程的 PDF 版本全文达到了一百七十多页,十分夸张,另一方面,我已暗下决心,打算追看下去,事实上,那天晚上的确是追到了两点多才下班回家,虽然没有把教程全部追完,但是也已经大有收获,大有学习了,在此,再一次,认真,隆重的感谢原作者,感谢他的这种开源以及认真努力(据教程中所见,貌似作者是凌晨四点完成的文档)的精神。
我所分享的,并未完全按照原来的文档内容,而是经过自己的部署,自己的理解,进行整理,编辑而成的,使之更加容易阅读,也更加容易理解一些,毕竟对于自己这种刚入门的情况来说,写的越详细,就会越容易领略其中精髓吧。
接下来进入正式内容的分享。
# 2,组件版本
- Kubernetes 1.10.4
- Docker 18.03.1-ce
- Etcd 3.3.7
- Flanneld 0.10.0
- 插件:
- Coredns
- Dashboard
- Heapster (influxdb、grafana)
- Metrics-Server
- EFK (elasticsearch、fluentd、kibana)
- 镜像仓库:
- docker registry
- harbor
# 3,主要配置策略
kube-apiserver:
- 使用 keepalived 和 haproxy 实现 3 节点高可用;
- 关闭非安全端口 8080 和匿名访问;
- 在安全端口 6443 接收 https 请求;
- 严格的认证和授权策略 (x509、token、RBAC);
- 开启 bootstrap token 认证,支持 kubelet TLS bootstrapping;
- 使用 https 访问 kubelet、etcd,加密通信;
kube-controller-manager:
- 3 节点高可用;
- 关闭非安全端口,在安全端口 10252 接收 https 请求;
- 使用 kubeconfig 访问 apiserver 的安全端口;
- 自动 approve kubelet 证书签名请求 (CSR),证书过期后自动轮转;
- 各 controller 使用自己的 ServiceAccount 访问 apiserver;
kube-scheduler:
- 3 节点高可用;
- 使用 kubeconfig 访问 apiserver 的安全端口;
kubelet:
- 使用 kubeadm 动态创建 bootstrap token,而不是在 apiserver 中静态配置;
- 使用 TLS bootstrap 机制自动生成 client 和 server 证书,过期后自动轮转;
- 在 KubeletConfiguration 类型的 JSON 文件配置主要参数;
- 关闭只读端口,在安全端口 10250 接收 https 请求,对请求进行认证和授权,拒绝匿名访问和非授权访问;
- 使用 kubeconfig 访问 apiserver 的安全端口;
kube-proxy:
- 使用 kubeconfig 访问 apiserver 的安全端口;
- 在 KubeProxyConfiguration 类型的 JSON 文件配置主要参数;
- 使用 ipvs 代理模式;
集群插件:
- DNS:使用功能、性能更好的 coredns;
- Dashboard:支持登录认证;
- Metric:heapster、metrics-server,使用 https 访问 kubelet 安全端口;
- Log:Elasticsearch、Fluend、Kibana;
- Registry 镜像库:docker-registry、harbor;
上次更新: 2024/07/04, 22:40:37