虚拟机环境设置,如果不是虚拟机可以忽略不看
1、安装配置containerd
1.1 添加 Kubernetes 官方仓库
安装cri-tools的时候需要用到
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
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubemetes/yum/doc/rpm-package-key.gpg
EOF
1.2 安装cri-tools、containerd
yum -y install containerd.io-1.6.33 cri-tools
如果报:
就更换yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
如果报:
就更换docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3 设置containerd镜像加速
#生成containerd的配置文件
containerd config default > /etc/containerd/config.toml
#编辑配置文件config.toml
vi /etc/containerd/config.toml
在[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
行下添加内容
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint=["https://dockerproxy.com", "https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.ustc.edu.cn","https://registry-1.docker.io", "https://hbv0b596.mirror.aliyuncs.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]endpoint=["https://dockerproxy.com", "https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.ustc.edu.cn","https://hbv0b596.mirror.aliyuncs.com", "https://k8s.m.daocloud.io", "https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"]
1.4 启动并设置开机自启
systemctl start containerd
systemctl enable containerd
2、安装容器工具
2.1 下载cni-plugins
下载完之后丢到Linux中
2.2 解压并安装
mkdir -p /opt/cni/bin/
tar -zxvf cni-plugins-linux-amd64-v1.2.0.tgz -C /opt/cni/bin/
3、搭建kubernetes集群
3.1 安装配置kubelet、kubeadm、kubectl
yum install -y kubelet-1.27.6 kubeadm-1.27.6 kubectl-1.27.6
3.2 kubelet启动并设置开机自启
systemctl start kubelet
systemctl enable kubelet
3.3 初始集群master节点
kubeadm init \
--apiserver-advertise-address=10.0.2.5 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.27.6 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16
3.3.1 可能遇见错误 1:/proc/sys/net/bridge/bridge-nf-call-iptables 不存在
-
原因:
Kubernetes 要求启用 bridge-nf-call-iptables 以实现容器网络桥接流量通过 iptables 规则(CNI 插件如 Flannel/Calico 依赖此功能)。 -
解决方法:
1、加载内核模块并设置参数:# 加载 br_netfilter 内核模块 sudo modprobe br_netfilter # 临时生效 echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables
2、持久化配置(防止重启失效):
sudo tee /etc/modules-load.d/br_netfilter.conf <<EOF br_netfilter EOF sudo tee /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 EOF # 重新加载配置 sudo sysctl --system
3.3.2 可能遇见错误 2:/proc/sys/net/ipv4/ip_forward 未设置为 1
-
原因:
Kubernetes 要求启用 IP 转发(ip_forward=1)以支持 Pod 跨节点通信。 -
解决方法:
1、临时启用(立即生效):echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
2、持久化配置:
sudo tee -a /etc/sysctl.d/k8s.conf <<EOF net.ipv4.ip_forward = 1 EOF sudo sysctl --system
3.4 根据返回的结果执行对应的命令
3.4.1 本地执行代码
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.4.2 安装Calico网络
3.4.2.1、安装 Tigera 操作符和自定义资源定义
#由于 CRD 包很大,kubectl apply可能会超出请求限制。请改用kubectl create或kubectl replace。
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.3/manifests/tigera-operator.yaml
3.4.2.2、通过创建必要的自定义资源来安装 Calico
1、下载custom-resources.yaml
2、修改pod网段改为我们初始化集群时候设置的10.244.0.0/16
3、安装 Calico
kubectl create -f custom-resources.yaml
4、确定所有的pod都有运行
3.4.3 其他的node节点加入集群
kubeadm join 10.0.2.5:6443 --token p9rnu4.7zjncoc2q7abf3st --discovery-token-ca-cert-hash sha256:2c2aba213ad44e2e8f951add165d72629d4807f2d59b7de2bb9c102c660f0f17
由于创建需要时间比较长可以运行watch kubectl get pod -n kube-system -o wide
监控创建结果
3.4.4 查看是否加入成功
kubectl get nodes