
服务器要求:CentOS 7.9两台(Master配置建议2核4G+,Node 2核2G+)
原理:Kubernetes对系统环境要求严格,需统一主机名、关闭防火墙、禁用Swap等,避免安装失败。
操作目的:让Master和Node能通过主机名互相通信。
# 在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查看 。
操作目的:防火墙和SELinux可能拦截Kubernetes组件通信。
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux(临时生效)
setenforce 0
# 永久关闭SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
注意:需重启服务器使配置永久生效 。
原理:Kubernetes 1.8+要求禁用Swap以保证稳定性。
# 临时关闭Swap
swapoff -a
# 永久关闭Swap(注释swap行)
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
验证:free -m查看Swap行是否全为0 。
原理:Linux内核需支持容器网络桥接和流量转发。
# 加载内核模块
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 。
原理:Kubernetes证书依赖时间一致性。
# 安装NTP服务
yum install -y ntp
# 启动并同步时间
systemctl start ntpd
systemctl enable ntpd
ntpdate time.windows.com
验证:date查看时间是否一致 。
版本要求:Docker 19.03+(与K8s 1.19兼容)
# 卸载旧版本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 。
原理:kubeadm是官方推荐的集群部署工具,kubelet用于管理容器,kubectl是命令行工具。
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
# 安装组件
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
# 设置kubelet开机启动
systemctl enable kubelet
验证:kubeadm version查看版本 。
原理:kubeadm init会生成集群证书、配置文件和核心组件Pod。
# 替换为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节点加入 。mkdir -p $HOME/.kube
sudocp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudochown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
验证:kubectl get pods -n kube-system查看Calico Pod是否运行 。
操作前提:确保Node节点已完成步骤一至三。
# 粘贴Master初始化时输出的kubeadm join命令(示例)
kubeadm join 192.168.1.100:6443 --token abcdef.1234567890 \
--discovery-token-ca-cert-hash sha256:xxxxxx
在Master执行:
kubectl get nodes
预期结果:Master和Node状态均为Ready 。
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc
访问[http://NodeIP ](http://NodeIP ):端口测试Nginx是否运行。
docker pull registry.aliyuncs.com/google_containers/ 镜像名 。后面会继续部署应用、配置存储和监控,有什么错误之处欢迎留言指出不足。一起学习一起进步。