当前位置: 首页 > news >正文

搭建k8s集群实战(一)系统设置

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.191k8s-master-012C & 4GMaster01
10.208.1.192k8s-master-022C & 4GMaster02
10.208.1.195k8s-master-032C & 4GMaster03
10.208.1.196k8s-node-012c & 4GNode01
10.208.1.198k8s-node-022c & 4GNode02
# 都开通直通上网,方便拉去镜像。

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

相关文章:

  • 机器学习-决策树【手撕】
  • spawn_group_template | spawn_group | linked_respawn
  • 【Flink-CDC】Flink CDC 介绍和原理概述
  • 编码风格之(5)GNU软件编码风格(3)
  • c# MathNet.Numerics 圆拟合使用案例
  • 08章【文件与IO】
  • CMS如何调优
  • 如何在Docker下部署MinIO存储服务通过Buckets实现文件的远程上传
  • keil5 查看stm32 寄存器的值
  • MySQL对数据库的操作
  • 软件是什么?前端,后端,数据库
  • http503错误是什么原因
  • Redis(五)
  • 初识k8s(概述、原理、安装)
  • 微服务不死 — 共享变量在策略引擎项目的落地详解
  • Consul Config 使用Git做版本控制的实现
  • java8 Stream Pipelines 浅析
  • JavaScript-Array类型
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Octave 入门
  • React Native移动开发实战-3-实现页面间的数据传递
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 成为一名优秀的Developer的书单
  • 分布式熔断降级平台aegis
  • 前端之Sass/Scss实战笔记
  • 前嗅ForeSpider教程:创建模板
  • 手写双向链表LinkedList的几个常用功能
  • 手写一个CommonJS打包工具(一)
  • 数组的操作
  • 微信小程序设置上一页数据
  • 一道面试题引发的“血案”
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • (差分)胡桃爱原石
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)WCF的Binding模型
  • (转)3D模板阴影原理
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)socket Aio demo
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .bashrc在哪里,alias妙用
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net开发时的诡异问题,button的onclick事件无效
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .NET开源快速、强大、免费的电子表格组件
  • @Bean有哪些属性
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • @Valid和@NotNull字段校验使用
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [AIGC codze] Kafka 的 rebalance 机制
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [c]扫雷
  • [C++]:for循环for(int num : nums)
  • [HTML]Web前端开发技术7(HTML5、CSS3、JavaScript )CSS的定位机制——喵喵画网页