k8s安装及升级
使用kubeadm工具快速安装kubernetes集群和使用二进制方式安装kubernetes集群
目录
使用 kubeadm 工具快速安装 Kubernetes 集群
修改 kubeadm的默认配置init-config.yaml
运行 kubeadm init 命令安装 Master 节点
使用init-config.yaml配置一键安装master节点
安装 kubeadm和kubelet (在 Node 上无须安装 kubectl)
-------------部署master节点------------
利用ca.crt,为kube-apiserver签发服务端CA证书。
创建客户端连接 kube-apiserver 服务所需的 kubeconfig 配置文件
将kube-controller-manager注册为systemd服务
使用 HAPproxy和 keepalived 部署高可用负载均衡器
-----------部署Node节点----------------
在Master 上通过 kubectl 验证 Node 信患
使用 kubeadm 工具快速安装 Kubernetes 集群
安装cubeadm
![](https://i-blog.csdnimg.cn/blog_migrate/db3dc1ea716d7a5eeb0d37b06aef8258.png)
修改 kubeadm的默认配置init-config.yaml
![](https://i-blog.csdnimg.cn/blog_migrate/3471fb9dece552e121d9fe5991412835.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b325cd6e6631845b53c012e8dbac19e2.png)
下载Kubernetes 的相关镜像
运行 kubeadm init 命令安装 Master 节点
准备工作
另外, Kubemetes 默认设置 cgroup 驱动 (cgroupdriver) 为“systemd" ,而 Docker 服务的 cgroup 驱动默认值为 “cgroupfs" ,建议将其修改为 “systemd" ,与 Kubemetes 保持一致。这可以通过修改 docker 服务的配置文件(默认为/et ocker/daemon.json) 进行设置
{
}
使用init-config.yaml配置一键安装master节点
准备工作就绪之后 以运行 kubeadm init 命令,使用之前创建的配置文件一键安 Maste 节点(控制平面)了:
# kubeadm init --config=init-config.yaml
使用cubectl 命令行工具访问集群
到此 Kubernetes aster 节点 经可 工作了, 但在集群内还是没有可用的 Worker node, 并缺乏容器网络的配置。
将新的 Node 加入集群
安装 kubeadm和kubelet (在 Node 上无须安装 kubectl)
使用 kubeadm join命令加入集群
![](https://i-blog.csdnimg.cn/blog_migrate/65c027bda7ade797b7b46ccec4f2fb70.png)
安装 CNI 网络插件
验证kerbernetes集群是否工作正常
以二进制文件方式安装 Kuernetes 安全高可用集群
集群架构
- Master的 kube-apiserve、 kube-controller-manager和 kube-scheduler 服务至少以3个节点的多实例方式部署。
- Master 启用基于CA认证的 HTTPS 安全机制。
- etcd 至少以 3个节点的集群模式部署
- etcd 集群启用基于 CA 认证的 HTTPS 安全机制
- Master 启用 RBAC 授权模式(详见 6.2 节的说明)
Master 的高可用部署架构如图 2.1 所示
master(即api-server)
三个节点的dns名称及IP地址:k8s-1(192.168.18.3)、k8s-2(192.168.18.4)、k8s-3(192.168.18.5)
三个节点的api-server服务地址:https://192.168.18.3:6443,https://192.168.18.4:6443,https://192.168.18.5:6443
或 https://k8s-1:6443,https://k8s-2:6443,https://k8s-3:6443
负载均衡器服务地址:https://192.168.18.100:9443。kube-controller-manager、kube-scheduler、kubelet、kube-proxy 服务作为客户端,通过该地址访问master(kube-apiserver) 服务。
master服务的DNS名称:kerbernetes、kerbernetes.default、kerbernetes.default.svc、kerbernetes.default.svc.cluster.local
master服务的Cluster IP地址:169.169.0.1
api-server要访问etcd,因此配置api-server时,要配置etcd的三个服务地址、etcd的客户端证书:
controller-manager
是部署在三个节点上吗?三个节点之间的服务发现如何实现?配置中没有看到类似etcd的服务发现配置。
cube-scheduler
是部署在三个节点上吗?三个节点之间的服务发现如何实现?配置中没有看到类似etcd的服务发现配置。
![](https://i-blog.csdnimg.cn/blog_migrate/aeffe9b4d9d25326ab53eaf94b2b22c8.png)
相关安装包
需要安装的组件
-------------部署master节点------------
CA根证书
ca.key ca.crt
部署ETCD集群
下载etcd安装包,注册systemd服务
利用CA根证书,为etcd签发服务端和客户端CA证书
api-server要连接etcd,需要客户端证书。
CA证书的subjectAltname参数包含三个etcd服务器的IP地址
etcd_server.key/etcd_server.crt、etc_client.key/etc_client.crt
证书配置文件etcd_ssl.conf,配置如下:
将三个节点的etcd注册为Systemd服务
/etc/etcd/etcd.conf文件内容如下:
部署master(即kube-apiserver)
利用ca.crt,为kube-apiserver签发服务端CA证书。
服务端证书文件:apiserver.key/apiserver.crt。
证书配置文件master_ssl.conf,配置如下:
将三个节点的apiserver注册为Systemd服务
参数说明:
kube-apiserver基于 token 的认证机制
![](https://i-blog.csdnimg.cn/blog_migrate/69a4eef5f0e10dff2fb80bf12658d2b9.png)
为api-server签发客户端CA证书
客户端证书文件:client.key/client.crt
![](https://i-blog.csdnimg.cn/blog_migrate/f18430b92776bb3dc4721fef15d006aa.png)
创建客户端连接 kube-apiserver 服务所需的 kubeconfig 配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/47fc4bbd07dbd7f7ed4e4c890adfe76f.png)
部署 kube-controller-manager 版务
将kube-controller-manager注册为systemd服务
问题:是三个节点都部署kube-controller-manager吗?没有看到相互发现的配置,如何相互发现的?
部署 kube-scheduler 服务
注册为systemd服务
使用 HAPproxy和 keepalived 部署高可用负载均衡器
![](https://i-blog.csdnimg.cn/blog_migrate/aeffe9b4d9d25326ab53eaf94b2b22c8.png)
HAProxy配置(haproxy.cfg)
keepalived配置(keepalived.conf)
在运行正常的情况下, keepalived 会在服务器 192.168 18.3 的网卡 ens33 上设置 192.168.18 100的 IP 地址,同样在服务器 192. 68.18.3 上运行的 HAProxy 将在该 IP 地址上监听 9443 端口号,对需要访问 Kubernetes Maste 的客户端提供负载均衡器的入口地址,即192.168.18.100:9443
验证keepalive是否部署成功
![](https://i-blog.csdnimg.cn/blog_migrate/e1ec892adcdaf1401aeb22e5670cca74.png)
-----------部署Node节点----------------
Node 需要部署 docker、 kubelet、 kube-proxy, 在成功加入 Kubernetes 集群后 还需要部署 CNI 络插件、DNS 插件等管理组件。 Docker 的安装和启动详见 Docker 官网 的说明文档 本节主要对如何部署 kubelet、kube-proxy 进行说明 CNI 网络插件的安装部署详见7 .7 节的说明, DNS 插件的安装部署详见 4.3 节的说明。
部署kubelet
部署kube-proxy
注册为systemd服务
在Master 上通过 kubectl 验证 Node 信患
部署CNI网络插件--docker
部署DNS插件
私有镜像库的相关配置
- Docker 提供的 Registry 镜像库,详细说明请 考官网的说明
- Harbor 镜像仓库 详细说明请参考官网的说明或者 Harbor 项目维护者及贡献者 《Harbor 权威指南 》一 书。
此外, Kubernetes 对于创建 Pod 需要使用 个名为 “pause" 的镜像, tag 名为 "k8s.gcr. io/pause: 3.2" ,默认从镜像库 k8s.gcr io 下载,在私有云环境中可以将其上传到私 有镜像库,并修改kubelet 的启动参数--pod-infra-container-image, 将其设置为使用镜像库 的镜像名称,例如: --pod-infra-container-image=<my-privat e-regi st ry>/pause:3.2
Kubernetes 的版本升级
二进制文件升级
![](https://i-blog.csdnimg.cn/blog_migrate/4b8cda403a9b5aa4281c48282e6f82f1.png)
使用 kubeadm 进行集群升级
升级master节点
升级Node节点
更多推荐
所有评论(0)