ubl007
作者ubl007·2023-10-09 21:00
私有云高级交付(DTA方向)·百度智能云

生产业务环境下部署 Kubernetes 高可用集群的步骤

字数 2489阅读 1315评论 0赞 6

注意:

这只是一份儿部署实践的思路概述,不是一个步骤一个步骤的操作示范,但是可以以此为框架补充成操作示范文档 !!!

部署简明概要:

KubernetesMaster上的 kube-apiserver、kube-scheduler、kube-controller-manager需要部署成不少于3节点的形式,并为之启用CA认证的HTTPS机制;

etcd需要部署成不少于3节点的形式,并为之启用CA认证的HTTPS机制;

要为Master角色启用RBAC授权模式。

为master角色集群构建一个负载均衡代理入口。

第一部分 创建自定义的CA证书:

使用OpenSSL(还可用easyrsa、cfssl等工具)创建CA根证书:【私钥文件是 ca.key、证书文件是 ca.crt ,默认保存在目录 /etc/kubernetes/pki/ 中】

openssl genrsa -out ca.key 2048

openssl req -x509 -new -nodes -key ca.key -subj "CN=master的主机IP" -days 证书的有效期 -out ca.crt

第二部分 部署 etcd 高可用集群:

下载 etcd 的预编译二进制文件,解压后放到 /usr/bin/ ,并将 etcd 部署为 systemd 型服务(需编写配置文件 usr/lib/systemd/system/etcd.sservice)

配置 etcd 的 CA 证书。先创建一个用于为全部etcd节点生成CA证书的配置文件 etcd_ssl.cnf ,然后用 openssl 分别创建 etcd 的服务端和客户端 CA 证书文件、并保存到目录 /etc/etcd/pki/ 中。

在全部的 etcd 节点上配置etcd的服务于环境变量信息,使用配置文件 /etc/etcd/etcd.conf 。

在全部的 etcd 节点上启动etcd服务,并设置为开机自动启动。

第三部分 部署 Kubernetes-Master高可用集群:

下载 Kubernetes-Master 角色所用的 组件 kube-apiserver、kube-scheduler、kube-controller-manager 【相对而言,kube-apiserver是作为服务端存在的;kube-scheduler、kube-controller-manager、kubelet、kube-proxy都是作为kube-apiserver的客户端存在的】

将下载到的Kubernetes-Master 角色所用的预编译二进制文件保存到各主机的 /usr/bin/ 下;

编写用于生成 组件服务端 kube-apiserver 的 CA证书文件 的配置文件 master_ssl.cnf ;通过 openssl 命令生成组件服务端 kube-apiserver 的 CA证书文件并保存到目录 /etc/kubernetes/pki/ 中;

为 组件服务端 kube-apiserver 创建 systemd 管理配置文件;为 组件服务端 kube-apiserver 的配置文件添加启动参数、CA安全配置信息等;

在全部的master角色主机上分别启动 kube-apiserver 服务,并设为开机自动启动;

为 kube-scheduler、kube-controller-manager 创建访问 kube-apiserver 的 CA证书及私钥文件。通过openssl工具生成 CA证书及私钥文件 并保存到目录 /etc/kubernetes/pki/ 中;

为 kube-scheduler、kube-controller-manager 创建访问 kube-apiserver 的 配置文件 kubeconfig 并保存到目录 /etc/kubernetes/ 中;【kubctl也需要使用这个配置文件链接到 kube-apiserver】

为 kube-scheduler、kube-controller-manager 创建 systemd 管理配置文件;并为他们各自的服务配置文件 添加启动参数、CA安全配置信息等;

在全部的master角色主机上分别启动 kube-scheduler、kube-controller-manager 服务,并设为开机自动启动;

第四部分 为 Kubernetes-Master 集群创建负载均衡代理入口(使用 HAProxy和keepalived实现)

第五部分 部署 Kubernetes-Slave集群:

下载Kubernetes-Slave角色所用的组件 docker(此处以docker为Kubernetes运行时环境接口为例,还可以使用Containerd)、kubelet、kube-proxy 的预编译二进制文件保存到各主机的 /usr/bin/ 下;

为 kube-proxy、kubelet 创建 systemd 管理配置文件;并为他们各自的服务配置文件 添加启动参数、CA安全配置信息等;

在全部的slave角色主机上分别启动 kube-proxy、kubelet 服务,并设为开机自动启动;

第六部分 验证 Kubernetes 集群的 master与Slave连通性:

在 master 节点上 执行 kubectl --kubeconfig=访问kube-apiserver的配置文件(本例中是/etc/kubernetes/kubeconfig) get nodes

第七部分 给 Kubernetes 集群安装 CNI 网络插件 和 DNS 组件。


附记:

趁着还能使用图书馆,得好好整理下最近一个工作阶段的工作笔记、学习笔记了,分门别类地把各个方面的知识积累有条理地整理起来。

今天大大剌剌第参加 阿里云和天翼云 的技术面试,回复考官提问时竟然需要回想一下自己在项目中的故障情形处理细节才能给考官答案了,感觉问题回答很没条理 ......

才一个月不碰具体业务,竟然有了业务生疏感了......

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

6

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

最佳实践
不同的领域,都有先行者,实践者,用他们的最佳实践来加速更多企业的建设项目落地。

作者其他文章

相关文章

相关问题

相关资料

X社区推广