swapoff -a # 暂时关闭swap # sed -i 's/^SELINUX.*/SELINUX=disabled/g' /etc/selinux/config 关闭selinux # 启用模块 echo"bridge" | tee /etc/modules-load.d/bridge.conf echo"br_netfilter" | tee /etc/modules-load.d/br_netfilter.conf
# 配置 sysctl # 注意:需要更换下列net.ipv4.conf.enp1s0.rp_filter=0中的网卡 cat >> /etc/sysctl.conf << "EOF" # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/. # # Vendors settings live in /usr/lib/sysctl.d/. # To override a whole file, create a new file with the same in # /etc/sysctl.d/ and put new settings there. To override # only specific settings, add a file with a lexically later # name in /etc/sysctl.d/ and put new settings there. # # For more information, see sysctl.conf(5) and sysctl.d(5). kernel.sysrq=0 net.ipv4.ip_forward=0 net.ipv4.conf.all.send_redirects=0 net.ipv4.conf.default.send_redirects=0 net.ipv4.conf.all.accept_source_route=0 net.ipv4.conf.default.accept_source_route=0 net.ipv4.conf.all.accept_redirects=0 net.ipv4.conf.default.accept_redirects=0 net.ipv4.conf.all.secure_redirects=0 net.ipv4.conf.default.secure_redirects=0 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.icmp_ignore_bogus_error_responses=1 net.ipv4.conf.all.rp_filter=1 net.ipv4.conf.default.rp_filter=1 net.ipv4.tcp_syncookies=1 kernel.dmesg_restrict=1 net.ipv6.conf.all.accept_redirects=0 net.ipv6.conf.default.accept_redirects=0
# [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist # [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-ip6tables]: /proc/sys/net/bridge/bridge-nf-call-ip6tables does not exist net.bridge.bridge-nf-call-iptables=1 net.ipv4.ip_forward=1
# many interface of linux node for spical vlan can connect config net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.lo.rp_filter=0 net.ipv4.conf.eno1.rp_filter=0 EOF
kubeadm config print init-defaults --component-configs KubeProxyConfiguration,KubeletConfiguration > kubeadm-init.yaml sed -i 's/\(kubernetesVersion: \).*/\1 1.31.1/g' kubeadm-init.yaml sed -i 's/\(advertiseAddress: \).*/\1 '${cluster_float_ip}'/g' kubeadm-init.yaml sed -i 's/\( name: \).*//g' kubeadm-init.yaml sed -i 's#\(serviceSubnet: \).*#\1 10.96.0.0/16,2001:db8:42:1::/112\n podSubnet: 10.244.0.0/16,2001:db8:42:0::/56#g' kubeadm-init.yaml sed -i 's/imageRepository: registry.k8s.io/imageRepository: registry.aliyuncs.com\/google_containers/g' kubeadm-init.yaml sed -i '/scheduler: {}/ a\controlPlaneEndpoint: cluster.svc' kubeadm-init.yaml sed -i '/memorySwap: {}/ a\failSwapOn: false' kubeadm-init.yaml
kubeadm config images list --config=kubeadm-init.yaml crictl pull registry.aliyuncs.com/google_containers/pause:3.8 ctr -n k8s.io i tag registry.aliyuncs.com/google_containers/pause:3.8 registry.k8s.io/pause:3.8
# cilium # https://github.com/cilium/cilium-cli wget https://github.com/cilium/cilium-cli/releases/download/v0.16.18/cilium-linux-amd64.tar.gz tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
cilium version --client cilium install --version 1.16.1
cilium config set ipam kubernetes cilium config set enable-ipv4 true cilium config set cluster-pool-ipv4-cidr 10.96.0.0/16 cilium config set enable-ipv6 false
cilium status --wait
6. 配置本地存储
1 2 3 4 5 6
# local path-provisioner # https://github.com/rancher/local-path-provisioner wget https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.29/deploy/local-path-storage.yaml sed -i 's#/opt/local-path-provisioner#/opt/k8s-local-path-storage#g' local-path-storage.yaml crictl pull dhub.kubesre.xyz/rancher/local-path-provisioner:v0.0.29 ctr -n k8s.io i tag dhub.kubesre.xyz/rancher/local-path-provisioner:v0.0.29 docker.io/rancher/local-path-provisioner:v0.0.29 k apply -f local-path-storage.yaml