本文介绍: Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效状态自动在其他Node拉起Pod,实现了应用层的高可用性。针对Kubernetes集群,高可用性还应包含以下两个层面的考虑:Etcd数据库的高可用性和Kubernetes Master组件的高可用性。Master节点扮演着总控中心的角色,通过不断与工作节点上的Kubelet进行通信来维护整个集群的健康工作状态。

1、架构及服务

Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效状态自动在其他Node拉起Pod,实现了应用层的高可用性。

针对Kubernetes集群,高可用性还应包含以下两个层面的考虑:Etcd数据库的高可用性和Kubernetes Master组件的高可用性。

Master节点扮演着总控中心的角色,通过不断与工作节点上的Kubelet进行通信来维护整个集群的健康工作状态。如果Master节点故障,将无法使用kubectl工具或者API做任何集群管理。

Master节点主要有三个服务kube-apiserver、kube-controller-mansger和kube-scheduler,其中kube-controller-mansger和kube-scheduler组件自身通过选择机制已经实现了高可用,所以Master高可用主要针对kube-apiserver组件,而该组件是以HTTP API提供服务,因此对他高可用与Web服务器类似,增加负载均衡器对其负载均衡即可,并且可水平扩容。
请添加图片描述

2、组件说明

APIserver:所有服务访问统一入口
controllerManager:维护副本的期望数目
scheduler:负责介绍任务,选择合适节点接受任务
ETCD:键值对数据库,存储K8S集群重要信息(持久化)
Kubectl :实现容器生命周期管理
Kubectl proxy:写入规则至ipvs
Coredns:可以为集群中的SVC创建一个A记录
Dashboard:B/S结构的访问体系
Ingress:官方实现的是4层代理,ingress实现的是7层代理(域名,主机名)
Federation:跨K8S集群调用

3、IP地址规划

高可用K8S集群为避免脑裂一般采用如三、五、七等奇数个mater节点,首先要有一个 master 节点,可以先将单一节点集群构建完毕,然后再让其他服务器加入组成三个master 节点高可用,然后再以工作节点 Node 加入。此文档为全新构建。

地址 主机名 内存&CPU 角色
10.208.1.190 —— —— vip
10.208.1.191 k8s-master-01 2C & 4G Master01
10.208.1.192 k8s-master-02 2C & 4G Master02
10.208.1.195 k8s-master-03 2C & 4G Master03
10.208.1.196 k8s-node-01 2c & 4G Node01
10.208.1.198 k8s-node-02 2c & 4G Node02
# 都开通直通上网,方便拉去镜像。

4、操作系统内核版本

#cat /etc/redhat-release 
CentOS Stream release 8

5、修改hosts【所有节点】

必须配置,否则结点与master无法通讯

#cat >> /etc/hosts << EOF
10.208.1.190    master.k8s.io      k8s-vip
EOF

6、修改hostname【各节点依次操作】

修改 10.208.1.191 服务器

#hostnamectl  set-hostname  k8s-master-01

修改 10.208.1.192 服务器

#hostnamectl  set-hostname  k8s-master-02

修改 10.208.1.195 服务器

#hostnamectl  set-hostname  k8s-master-03

修改 10.208.1.196 服务器

#hostnamectl  set-hostname  k8s-node-01

修改 10.208.1.198 服务器

#hostnamectl  set-hostname  k8s-node-02

7、关闭防火墙和selinux【所有节点】

systemctl stop firewalld && systemctl disable firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0

#注意以上语句的空格,复制到记事本粘贴,/etc前面有空格

8、关闭swap【所有节点】【必须】

swapoff -a
sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab

9、设置系统【所有节点】

(1)针对于linux7以上,设置允许路由转发,不对bridge的数据进行处理

创建 /etc/sysctl.d/k8s.conf 文件

vim /etc/sysctl.d/k8s.conf

加入下面内容:

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

(2)挂载br_nebrtfilter

modprobe br_netfilter

持久化:

echo "br_netfilter" >> /etc/modules-load.d/modules.conf

(3)生效配置文件

sysctl -p /etc/sysctl.d/k8s.conf

sysctl命令:用于运行时配置内核参数
查看是否生成相关文件

ls /proc/sys/net/bridge

(4)资源配置文件

/etc/security/limits.conf 是 Linux 资源使用配置文件,用来限制用户对系统资源的使用,末尾加入

echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
echo "* soft nproc 65536"  >> /etc/security/limits.conf
echo "* hard nproc 65536"  >> /etc/security/limits.conf
echo "* soft  memlock  unlimited"  >> /etc/security/limits.conf
echo "* hard memlock  unlimited"  >> /etc/security/limits.conf

原文地址:https://blog.csdn.net/xgw1010/article/details/135753876

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_61423.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注