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
修改 kubeadm的默认配置init-config.yaml
下载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命令加入集群
安装 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的服务发现配置。
相关安装包
需要安装的组件
-------------部署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 的认证机制
为api-server签发客户端CA证书
客户端证书文件:client.key/client.crt
创建客户端连接 kube-apiserver 服务所需的 kubeconfig 配置文件
部署 kube-controller-manager 版务
将kube-controller-manager注册为systemd服务
问题:是三个节点都部署kube-controller-manager吗?没有看到相互发现的配置,如何相互发现的?
部署 kube-scheduler 服务
注册为systemd服务
使用 HAPproxy和 keepalived 部署高可用负载均衡器
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是否部署成功
-----------部署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 的版本升级
二进制文件升级
使用 kubeadm 进行集群升级
升级master节点
升级Node节点
更多推荐
所有评论(0)