环境先前配置
如下图进行配置网关指定为10.10.10.1, DNS指定为10.10.10.101
联网可以配置dns为腾讯云dns ip :119.29.29.29;这里我使用的是联网配置
系统使用debian12;内存为2.9,处理器为一个数量两个内核,硬盘为80G
虚拟网络编辑器设置NAT网关为10.10.10.1,物理主机vment8网卡为10.10.10.2/24 网关为10.10.10.1
先不进行克隆以下配置均在controller主机内进行配置
1.1配置静态域名转换
vim /etc/hosts.conf<br> 10.10.10.101 controller<br> 10.10.10.102 node1<br> 10.10.10.103 node2
1.2配置时间服务器
apt install chrony -y<br>vim /etc/chrony/chrony.conf<br> 9 server ntp.aliyun.com iburst<br> 10 allow 10.10.10.0/24<br> 11 local stratum 10<br> <br>date -R<br>timedatectl set-timezone Asia/Shanghai
1.3配置ipvs
apt install -y ipset ipvsadm<br>vim /etc/modules-load.d/ipvs.conf<br> 1 ip_vs<br> 2 ip_vs_rr<br> 3 ip_vs_wrr<br> 4 ip_vs_sh<br> 5 nf_conntrack<br><br>vim /root/ipvs.sh<br> 1 modprobe -- ip_vs<br> 2 modprobe -- ip_vs_rr<br> 3 modprobe -- ip_vs_wrr<br> 4 modprobe -- ip_vs_sh<br> 5 modprobe -- nf_conntrack<br><br>bash /root/ipvs.sh
1.4关闭swap分区
vim /etc/fstab<br> 15 sudo apt-get install -y kubelet=1.34.1-* kubeadm=1.34.1-* kubectl=1.34.1-*<br><br>swapoff -a #临时关闭swap分区
1.5允许iptables检查桥接流量
cat <<EOF | tee /etc/modules-load.d/k8s.conf<br>br_netfilter<br>bridge<br>EOF<br><br>cat <<EOF | tee /etc/sysctl.d/k8s.conf <br>net.bridge.bridge-nf-call-ip6tables = 1<br>net.bridge.bridge-nf-call-iptables = 1<br>net.ipv4.ip_forward = 1<br>EOF<br>sysctl --system
1.6禁用apparmor
systemctl disable --now apparmor
containerd
将所有相关的k8s软件包导入至虚拟机内
2.1拷贝containerd运行文件
cp /root/k8s-soft/containerd-2.1.4-linux-amd64/bin/containerd /usr/local/bin/<br>cp /etc/systemd/system/containerd.service /usr/lib/systemd/system/<br>cp /root/k8s-soft/containerd-2.1.4-linux-amd64/bin/ctr /usr/bin<br><br>chmod +x /usr/local/bin/containerd<br><br>containerd --help<br><br>root@controller:~# containerd --help<br>NAME:<br> containerd -<br> __ _ __<br> _________ ____ / /_____ _(_)___ ___ _________/ /<br> / ___/ __ \/ __ \/ __/ __ `/ / __ \/ _ \/ ___/ __ /<br> / /__/ /_/ / / / / /_/ /_/ / / / / / __/ / / /_/ /<br> \___/\____/_/ /_/\__/\__,_/_/_/ /_/\___/_/ \__,_/<br><br> high performance container runtime<br><br><br>USAGE:<br> containerd [global options] command [command options]<br><br>VERSION:<br> v2.1.4<br>
2.2生成配置文件
mkdir /etc/containerd<br>containerd config default > /etc/containerd/config.toml
2.3修改containerd的配置文件
vim /etc/containerd/config.toml<br> 50 sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10'<br> 108 SystemdCgroup = true<br> <br>grep SystemdCgroup /etc/containerd/config.toml<br> SystemdCgroup = ture<br><br>grep sandbox /etc/containerd/config.toml<br> sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10'<br><br>systemctl enable --now containerd<br>systemctl status containerd
2.4拷贝容器运行时
cp /usr/local/bin/containerd-shim-runc-v2 /usr/bin
runc
3.1单独安装runc
cp -p /root/k8s-soft/runc-v1.3.2.amd64 /usr/sbin/runc<br>chmod +X /usr/sbin/runc<br><br>root@controller:~# runc -v<br>runc version 1.4.0-rc.2<br>commit: v1.4.0-rc.2-0-g8aeb2a4b<br>spec: 1.2.1+dev<br>go: go1.24.8<br>libseccomp: 2.5.6<br>
k8s
4.1k8s软件安装
# 安装基础依赖<br>apt-get update<br>apt-get install -y apt-transport-https ca-certificates curl gpg<br><br># 创建密钥目录<br>mkdir -p /etc/apt/keyrings<br><br># 下载并添加GPG密钥<br>curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg<br><br># 添加Kubernetes APT源<br>echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list<br><br>apt-get install -y kubelet=1.34.1-* kubeadm=1.34.1-* kubectl=1.34.1-*<br>systemctl enable kubectl kubelet --now
4.2导入calico所需镜像
tar xf k8s-soft/calico-images-v3.31.0-linux-amd64.tar -C /root<br>for image in /root/calico-images-v3.31.0/linux/amd64/*.tar;do ctr -n k8s.io images import "$image";done
4.3导入k8s所需镜像
for image in /root/k8s-soft/k8s-componentsv1.34.1-images/*.tar;do ctr -n k8s.io images import "$image";done
ctr -n k8s.io images list
4.4克隆controller生成node1与node2
#过程跳过<br>node1与node2设置IPv4地址
4.5ssh免密登录
#controller生成ssh密钥<br>ssh-keygen<br>ssh-copy-id 10.10.10.102<br>ssh-copy-id 10.10.10.103
4.6k8s初始化集群
#controller<br>kubeadm init --apiserver-advertise-address=10.10.10.101 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.34.1 --service-cidr=10.96.0.0/12 --pod-network-cidr=192.168.0.0/16
4.6k8s配置文件创建
#controller<br>mkdir -p $HOME/.kube<br>sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config<br>sudo chown $(id -u):$(id -g) $HOME/.kube/config
4.7node节点加入k8s集群
#node1&&node2<br>kubeadm join x.x.x.x:6443 --token picxyk.su53y03l1z0jh333e \<br> --discovery-token-ca-cert-hash sha256:01fecbd4bdc0513811f7b65a43e41820d703a91c631e262b1ad4634e12cd0205 <br> --cri-socket=unix:///run/containerd/containerd.sock
calico
#controller<br>kubectl apply -f calico.yaml
集群重置
# 1. 完全重置节点<br>sudo kubeadm reset --force<br>sudo rm -rf /etc/kubernetes/ /var/lib/kubelet/ /var/lib/etcd/ /etc/cni/net.d/<br>sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X<br><br># 2. 清理 Docker(如果使用 Docker)<br>sudo docker ps -aq | xargs sudo docker rm -f<br>sudo docker system prune -af<br><br># 3. 重启节点<br>sudo reboot
删除故障pod
# 1. 清理异常的 Calico Pod<br>kubectl delete pod -n kube-system calico-kube-controllers-5766bdd7c-6kbwq --force --grace-period=0<br><br># 2. 重启所有 Calico 节点 Pod<br>kubectl delete pods -n kube-system -l k8s-app=calico-node<br><br># 3. 等待 Calico 重新启动<br>sleep 30<br>kubectl get pods -n kube-system | grep calico

评论(0)
暂无评论