k8s 复现环境搭建
1、自动搭建
参考:
https://www.jianshu.com/p/25c01cae990c
https://blog.csdn.net/fly910905/article/details/120887686
2、看搭建录像
3、
hostnamectl set-hostname k8sMaster
hostnamectl set-hostname k8sNodeOne
hostnamectl set-hostname k8sNodeTwo4、
cat <<EOF >>/etc/hosts
192.168.139.134 k8sMaster
192.168.139.135 k8sNodeOne
192.168.139.136 k8sNodeTwo
EOF5、
# 1. 备份并清理源(保留系统源)
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2>/dev/null || true
sudo rm -f /etc/yum.repos.d/docker-ce.repo
# 2. 添加 vault 归档源(2025 年还能用)
sudo tee /etc/yum.repos.d/CentOS-Base.repo <<EOF
[base]
name=CentOS-7 - Base (Vault)
baseurl=http://vault.centos.org/7.9.2009/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-7 - Updates (Vault)
baseurl=http://vault.centos.org/7.9.2009/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-7 - Extras (Vault)
baseurl=http://vault.centos.org/7.9.2009/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF
# 3. 清理并重建缓存
sudo yum clean all
sudo yum makecache
# 4. 安装 yum-utils 和依赖(vault 源可用)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 5. 添加 Docker 旧版源(用阿里云镜像,避免官方 404)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 6. 查看可用版本(如果 18.09.9 不可用,降级到 18.09.5)
sudo yum list docker-ce --showduplicates | sort -r
# 7. 安装指定版本(替换为可用版本,如果 18.09.9 404,用 18.09.5)
sudo yum install -y docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io
# 8. 启动 Docker
sudo systemctl enable docker
sudo systemctl start docker
# 9. 验证
docker --version6、
# 1. 防火墙一键关闭(现在 + 开机)
systemctl disable --now firewalld
# 2. SELinux 永久禁用(只改一个文件就够)
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
# 3. swap 永久关闭
swapoff -a
sed -i '/[[:space:]]swap[[:space:]]/s/^/#/' /etc/fstab
# 4. 开启网桥参数(k8s/calico/flannel 必备)
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 5. 立即生效
sysctl -p /etc/sysctl.d/k8s.conf
# 或者直接全局生效
# sysctl --system7、
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/apt/doc/apt-key.gpg https://packages.cloud.google.com/apt/doc/rpm-package-key.gpg
EOF
# 清理缓存
yum clean all
yum makecache
# 安装(加 --nogpgcheck 避签名坑,临时)
yum install -y --nogpgcheck kubectl-1.16.0-0 kubeadm-1.16.0-0 kubelet-1.16.0-0
# 启用服务
systemctl daemon-reload
systemctl enable kubelet && systemctl start kubelet8、Master 主机执行
# 1. 彻底清理现场
kubeadm reset -f
systemctl restart kubelet
# 2. 先预拉官方镜像(k8s.gcr.io 1.16.0 镜像全都在,稳)
kubeadm config images pull \
--image-repository k8s.gcr.io \
--kubernetes-version v1.16.0
# 3. 正式 init(带详细日志,方便看进度)
kubeadm init \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.16.0 \
--apiserver-advertise-address 192.168.136.134 \
--pod-network-cidr=10.244.0.0/16
# 4. 复制 kubeconfig(关键这行写对)
mkdir -p $HOME/.kube
sudo cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config9、node1 node2 分别执行
# 1.16.0 版本正确的 join(去掉不支持的参数)
kubeadm join 192.168.136.134:6443 --token 4gwvyn.13tivbrlxlry1iii \
--discovery-token-ca-cert-hash sha256:bb1c3e06a1d0dcecfb490e5b3252c28d06689ba003720ca9a38862273b5ff68f10 解决 notready 问题
# 1. 安装 wget
sudo yum install -y wget
# 2. 用下面任意一个地址(都指向原版 calico-3.9.2.yaml,永不 404)
# 推荐第一条(阿里云镜像,最快)
wget https://mirrors.aliyun.com/kubernetes-new/core/stable/v3.9.2/calico.yaml
# 或者用官方归档(稍微慢点)
# wget https://raw.githubusercontent.com/projectcalico/calico/v3.9.2/manifests/calico.yaml
# 3. 替换 POD CIDR(必须双引号)
export POD_SUBNET=10.244.0.0/16
sed -i "s#192\.168\.0\.0/16#${POD_SUBNET}#g" calico.yaml
# 4. 应用(文件名改成你实际下载的)
kubectl apply -f calico.yaml上传 kube-flannel.yml 后执行
kubectl apply -f kube-flannel.ymldocker pull docker.1ms.run/flannel/flannel