一、项目整体概述1.项目目标基于 kubeadm 工具快速搭建一套生产可用级别的 Kubernetes 集群,实现:容器应用的统一编排、调度、自愈与扩缩容多节点协同工作,形成高可用集群基础配套私有镜像仓库,支撑企业内部镜像管理2.集群架构规划主机名IP地址角色定位docker1192.168.174.128私有镜像仓库(Harbor),域名reg.westos.orgdocker2192.168.174.134Master控制节点,集群大脑docker3192.168.174.132Node工作节点,运行业务容器docker4192.168.174.133Node工作节点,运行业务容器3.核心技术栈操作系统:CentOS 7容器运行Docker集群部署工具:kubeadm网络插件:calico镜像仓库:Harbor4.实验准备工作我们开启4台centos虚拟机的克隆机,然后在MobaXter中分别打开终端,根据我上面的表格分别给它们起好名字,并且编写到hosts中192.168.174.128:hostnamectl set-hostname docker1192.168.174.134:hostnamectl set-hostname docker2192.168.174.132:hostnamectl set-hostname docker3192.168.174.133:hostnamectl set-hostname docker4然后在每台机器中分别进入修改:vim /etc/hosts二、环境初始化这一部分是让Linux系统满足节点运行的最低必要条件。K8s 对系统环境非常敏感,任何配置不达标都会导致集群异常。1.禁用selinuxselinux是linux强制访问控制安全模块,它会严格限制进程访问文件、网络、设备的权限,Docker / 节点 需要大量系统权限,SELinux 会拦截关键操作# 临时关闭 setenforce 0 # 永久关闭 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux2.关闭并禁用防火墙k8s集群内部节点间需要大量端口通信,防火墙未关闭会导致Master与Node无法通信、Pod网络不通、集群组件无法建立连接systemctl disable --now firewalld3.禁用swap分区这是k8s官方硬性要求,swap是磁盘虚拟内存,性能极低。K8s 调度基于内存资源计算,Swap 会干扰调度策略,开启 Swap 会导致 kubelet 无法正常启动swapoff -avim /etc/fstab将最后一段注释掉4.时间同步集群所有节点时间必须一致,证书验证、日志审计、组件心跳均依赖系统时间,时间偏差过大会导致:证书认证失败、节点无法加入集群,集群状态异常四台机器同时进行:(1)安装软件yum install -y chrony(2)修改时间服务器vim /etc/chrony.conf注释掉方框中的,并添加阿里时间源systemctl enable --now chronyd(3)重启服务systemctl restart chronyd(4)测试chronyc sources -v5.修改内核参数要添加的三个参数是 Docker + Kubernetes(Calico)网络的基础依赖(1)创建或编辑 docker.confvim /etc/sysctl.d/docker.conf内容:net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-i