前期准备
-
硬件与网络规划
- 设备选型:选择性能稳定、配置相当的物理服务器作为集群节点,建议采用相同型号以确保兼容性,可选用三台搭载多核CPU、大容量内存及高速存储设备的服务器,分别担任Master主控节点和两个Worker工作节点角色。
- IP地址分配:为每台机器设置固定静态IP并做好域名解析映射,如将192.168.137.129绑定给Master主机名,另外两台依次设置为node1(192.168.137.130)、node2(192.168.137.131),同时在所有节点的/etc/hosts文件中添加对应条目实现名称解析。
- 网络连通性测试:通过ping命令验证跨节点间的网络互通情况,确保无丢包或延迟过高现象。
-
操作系统标准化配置
- 时区同步:执行
timedatectl set-timezone Asia/Shanghai
统一调整所有节点的时间区域。 - 主机名修改:使用
hostnamectl set-hostname <新主机名>
命令分别重命名各节点。 - 安全策略调整:临时关闭防火墙(
systemctl stop firewalld && systemctl disable firewalld
)、禁用SELinux强制模式(sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config; setenforce 0
),避免干扰后续组件安装。 - 内核参数优化:创建/etc/sysctl.d/k8s.conf文件,写入以下配置以支持容器网络功能:
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness = 0 ```随后执行`sysctl --system`使生效,并加载br_netfilter模块。
- 时区同步:执行
-
基础软件安装
- Docker引擎部署:基于CentOS系统可通过yum仓库安装最新版Docker CE,关键步骤包括添加官方源、移除旧版本残留包、安装依赖项(如device-mapper)、本地化部署RPM包等,完成安装后启动服务并设置为开机自启。
- Kubeadm工具集准备:下载指定版本的Kubernetes二进制包(如v1.14),解压至/usr/local/k8s目录备用,该工具包包含kubelet守护进程、kubectl客户端工具以及初始化脚本等必要组件。
集群搭建流程
-
初始化Master节点
- 组件安装:运行以下命令获取并安装核心管控组件:
sudo apt-get update && sudo apt-get install -y apt-transport-https curl sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl
- 集群初始化:执行
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
生成证书体系与基础架构,此操作将创建etcd数据库用于存储集群状态数据,启动API Server提供RESTful接口接入点。 - 环境变量配置:复制生成的admin.conf文件至用户家目录(~/.kube/config),赋予普通用户权限以便日常管理操作。
- 网络插件部署:应用Flannel CNI插件实现跨主机容器通信:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
。
- 组件安装:运行以下命令获取并安装核心管控组件:
-
加入Worker节点
- Token生成:在Master端运行
kubeadm token create --print-join-command
获取加入指令模板。 - 节点注册:将在Master上获得的完整join命令复制到Worker节点执行,
sudo kubeadm join <MASTER_IP>:<PORT> --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
,该过程会自动下载所需镜像并注册到集群注册表中。
- Token生成:在Master端运行
-
验证集群状态
- 资源检视:使用
kubectl get nodes
查看已连接的工作节点列表,确认所有节点均处于Ready状态,若出现NotReady提示,需检查网络连通性或日志排查故障原因。 - 功能测试:尝试部署简单应用验证调度机制是否正常工作,例如运行一个Nginx示例:
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort ```通过访问任意Worker节点的对应端口号,应能正常看到Nginx默认页面。
- 资源检视:使用
典型应用场景示例
场景类型 | 优势特性 | 适用场景 |
---|---|---|
高可用Web服务 | 自动负载均衡、水平扩展 | 电商平台前端页面展示 |
批处理任务 | 弹性伸缩、资源隔离 | 大数据ETL处理 |
微服务架构 | 服务发现、熔断机制 | 分布式订单管理系统 |
CI/CD流水线 | 镜像构建集成、滚动更新 | DevOps持续交付流程 |
常见问题解答(FAQs)
Q1: 如果遇到“无法拉取镜像”的错误怎么办?
A: 这可能是由于国内网络环境导致的镜像下载缓慢或失败,解决方法包括:更换为阿里云等国内镜像源;预先手动下载所需镜像并导入本地仓库;或者在kubeadm init时指定–image-repository参数使用自定义镜像仓库。
Q2: 如何升级已存在的Kubernetes集群版本?
A: 推荐采用逐次升级策略:先备份ETCD数据;在Master节点执行kubeadm upgrade plan查看可升级路径;按提示逐步应用新版本组件;最后验证各工作节点的功能完整性,注意升级过程中应避免中断操作,防止造成脑裂问题。
通过以上步骤,您可以成功在物理机上部署一个高效稳定的Kubernetes集群,充分利用裸金属服务器的性能优势,同时享受容器编排
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/93954.html