首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >手把手教你用两台CentOS 7.9服务器搭建Kubernetes 1.19集群(Master + Node架构,适合小白操作)

手把手教你用两台CentOS 7.9服务器搭建Kubernetes 1.19集群(Master + Node架构,适合小白操作)

作者头像
IT咸鱼
发布2025-05-20 18:51:29
发布2025-05-20 18:51:29
2751
举报

服务器要求:CentOS 7.9两台(Master配置建议2核4G+,Node 2核2G+)

#一、准备工作:同步系统和网络配置

原理:Kubernetes对系统环境要求严格,需统一主机名、关闭防火墙、禁用Swap等,避免安装失败。

#1. 配置主机名和Hosts解析

操作目的:让Master和Node能通过主机名互相通信。

代码语言:javascript
复制
# 在Master节点执行  

hostnamectl set-hostname master  

# 在Node节点执行  

hostnamectl set-hostname node  



# 两台机器均修改hosts文件(替换实际IP)  

vi /etc/hosts  

192.168.1.100 master  

192.168.1.101 node  

注意:IP地址需替换为你的服务器实际IP,使用ifconfig查看 。

#2. 关闭防火墙和SELinux

操作目的:防火墙和SELinux可能拦截Kubernetes组件通信。

代码语言:javascript
复制
# 关闭防火墙  

systemctl stop firewalld  

systemctl disable firewalld  



# 关闭SELinux(临时生效)  

setenforce 0  

# 永久关闭SELinux  

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  

注意:需重启服务器使配置永久生效 。

#3. 禁用Swap分区

原理:Kubernetes 1.8+要求禁用Swap以保证稳定性。

代码语言:javascript
复制
# 临时关闭Swap  

swapoff -a  

# 永久关闭Swap(注释swap行)  

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

验证:free -m查看Swap行是否全为0 。

#4. 配置内核参数和IPVS

原理:Linux内核需支持容器网络桥接和流量转发。

代码语言:javascript
复制
# 加载内核模块  

cat > /etc/modules-load.d/k8s.conf << EOF  

br_netfilter  

ip_vs  

ip_vs_rr  

ip_vs_sh  

nf_conntrack  

EOF

modprobe --all  



# 配置sysctl参数  

cat > /etc/sysctl.d/k8s.conf << EOF  

net.bridge.bridge-nf-call-ip6tables = 1  

net.bridge.bridge-nf-call-iptables = 1  

net.ipv4.ip_forward = 1  

EOF

sysctl --system  

验证:lsmod | grep br_netfilter

#5. 同步服务器时间

原理:Kubernetes证书依赖时间一致性。

代码语言:javascript
复制
# 安装NTP服务  

yum install -y ntp  

# 启动并同步时间  

systemctl start ntpd  

systemctl enable ntpd  

ntpdate time.windows.com  

验证:date查看时间是否一致 。


#二、安装Docker容器运行时

版本要求:Docker 19.03+(与K8s 1.19兼容)

#1. 安装Docker并配置镜像加速
代码语言:javascript
复制
# 卸载旧版本Docker  

yum remove -y docker*  



# 安装依赖包  

yum install -y yum-utils device-mapper-persistent-data lvm2  



# 添加阿里云Docker仓库  

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  



# 安装Docker  

yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15  



# 配置镜像加速  

mkdir -p /etc/docker  

cat > /etc/docker/daemon.json << EOF  

{  

  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"],  

  "exec-opts": ["native.cgroupdriver=systemd"]  

}  

EOF



# 启动Docker  

systemctl start docker  

systemctl enable docker  

验证docker info查看Cgroup Driver是否为systemd


#三、安装Kubernetes组件(kubeadm/kubelet/kubectl)

原理:kubeadm是官方推荐的集群部署工具,kubelet用于管理容器,kubectl是命令行工具。

#1. 配置Kubernetes阿里云YUM源
代码语言:javascript
复制
cat > /etc/yum.repos.d/kubernetes.repo << EOF  

[kubernetes]  

name=Kubernetes  

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64  

enabled=1  

gpgcheck=0  

EOF

#2. 安装指定版本(1.19.0)
代码语言:javascript
复制
# 安装组件  

yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0  



# 设置kubelet开机启动  

systemctl enable kubelet  

验证kubeadm version查看版本 。


#四、初始化Master节点

原理:kubeadm init会生成集群证书、配置文件和核心组件Pod。

#1. 初始化命令(关键步骤)
代码语言:javascript
复制
# 替换为Master节点实际IP  

kubeadm init \  

  --apiserver-advertise-address=192.168.1.100 \  

  --image-repository registry.aliyuncs.com/google_containers \  

  --kubernetes-version v1.19.0 \  

  --service-cidr=10.96.0.0/12 \  

  --pod-network-cidr=192.168.0.0/16  

注意

  • •若报错[kubelet-check],检查Docker和kubelet是否运行。
  • •保存输出的kubeadm join命令,用于Node节点加入 。
#2. 配置kubectl权限
代码语言:javascript
复制
mkdir -p $HOME/.kube  

sudocp -i /etc/kubernetes/admin.conf $HOME/.kube/config  

sudochown $(id -u):$(id -g) $HOME/.kube/config  

#3. 安装Calico网络插件
代码语言:javascript
复制
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml  

验证kubectl get pods -n kube-system查看Calico Pod是否运行 。


#五、Node节点加入集群

操作前提:确保Node节点已完成步骤一至三。

#1. 执行加入命令
代码语言:javascript
复制
# 粘贴Master初始化时输出的kubeadm join命令(示例)  

kubeadm join 192.168.1.100:6443 --token abcdef.1234567890 \  

  --discovery-token-ca-cert-hash sha256:xxxxxx  

#2. 检查节点状态

在Master执行:

代码语言:javascript
复制
kubectl get nodes  

预期结果:Master和Node状态均为Ready


#六、验证集群功能

#1. 部署测试应用
代码语言:javascript
复制
kubectl create deployment nginx --image=nginx  

kubectl expose deployment nginx --port=80 --type=NodePort  

kubectl get svc  

访问[http://NodeIP ](http://NodeIP ):端口测试Nginx是否运行。

#2. 常见问题处理
  • Node节点NotReady:检查Calico是否安装成功,或重启kubelet。
  • 镜像拉取失败:手动拉取镜像docker pull registry.aliyuncs.com/google_containers/ 镜像名

后面会继续部署应用、配置存储和监控,有什么错误之处欢迎留言指出不足。一起学习一起进步。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • #一、准备工作:同步系统和网络配置
    • #1. 配置主机名和Hosts解析
    • #2. 关闭防火墙和SELinux
    • #3. 禁用Swap分区
    • #4. 配置内核参数和IPVS
    • #5. 同步服务器时间
  • #二、安装Docker容器运行时
    • #1. 安装Docker并配置镜像加速
  • #三、安装Kubernetes组件(kubeadm/kubelet/kubectl)
    • #1. 配置Kubernetes阿里云YUM源
    • #2. 安装指定版本(1.19.0)
  • #四、初始化Master节点
    • #1. 初始化命令(关键步骤)
    • #2. 配置kubectl权限
    • #3. 安装Calico网络插件
  • #五、Node节点加入集群
    • #1. 执行加入命令
    • #2. 检查节点状态
  • #六、验证集群功能
    • #1. 部署测试应用
    • #2. 常见问题处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档