企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## 修改主机名 ```shell sudo hostnamectl set-hostname <HOSTNAME> ``` >[info] `<HOSTNAME>` 根据实际的填写 ## 停止防火墙 ```shell sudo systemctl stop firewalld && sudo systemctl disable firewalld sudo setenforce 0 sudo sed -ri 's/^(SELINUX)=.*$/\1=disabled/' /etc/selinux/config ``` ## 关闭swap分区 ```shell sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab ``` ## 设置内核模块 ```shell cat <<-EOF | sudo tee /etc/sysconfig/modules/ipvs.modules > /dev/null #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack modprobe -- br_netfilter modprobe -- ipip EOF sudo chmod 755 /etc/sysconfig/modules/ipvs.modules && sudo bash /etc/sysconfig/modules/ipvs.modules ``` ## 设置的 sysctl 参数 ```shell cat <<-EOF | sudo tee /etc/sysctl.d/kubernetes.conf > /dev/null # 二层的网桥在转发包时也会被iptables的FORWARD规则所过滤 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 # kernel转发功能 net.ipv4.ip_forward = 1 # 允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭 net.ipv4.tcp_tw_reuse = 1 # TCP连接中TIME-WAIT sockets的快速回收, 默认是0,表示关闭。对于位于NAT设备(容器转发)后面的Client来说,就是一场灾难 net.ipv4.tcp_tw_recycle = 0 # 允许系统打开的端口范围,即用于向外连接的端口范围 net.ipv4.ip_local_port_range = 32768 65535 # kernel中最多存在的TIME_WAIT数量, 默认是4096 net.ipv4.tcp_max_tw_buckets = 65535 # 控制系统是否开启对数据包源地址的校验(0 不校验) net.ipv4.conf.all.rp_filter = 0 # 开启ipv6路由转发 net.ipv6.conf.all.forwarding = 1 # 开启ipv4路由转发 net.ipv4.conf.all.forwarding = 1 # FIN-WAIT-2状态保持时间 net.ipv4.tcp_fin_timeout = 15 EOF sudo sysctl -p /etc/sysctl.d/kubernetes.conf ``` ## 安装containerd 请参考博客园 [containerd安装](https://www.cnblogs.com/jiaxzeng/p/16708491.html) 文章 ## 添加 k8s 源 ```shell cat <<-EOF | sudo tee /etc/yum.repos.d/kubernetes.repo > /dev/null [kubernetes] name=Aliyun-kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 EOF sudo yum clean all && sudo yum makecache ``` ## 安装软件 ``` sudo yum install -y kubelet-1.23.3-0.x86_64 kubeadm-1.23.3-0.x86_64 ipvsadm conntrack-tools sudo systemctl enable kubelet.service ``` >[info] 查看 kubeadm 所有版本 `yum list kubeadm --showduplicates` ## 主机加入集群 >[info] 初始化集群时,有打印加入集群的相关命令。如果未保存加入集群命令的话,请参考下面步骤操作 ### master节点 1. 创建引导令牌(集群内其中一个master节点执行) ```shell $ kubeadm token create --print-join-command kubeadm join 172.139.20.100:6443 --token xg1pus.an5hon6cfx97rfuu --discovery-token-ca-cert-hash sha256:37584a6ac155be6024504dab60c420bed392b40d1ab7d59f4f85f2ec6d8ed844 ``` 2. 创建控制平面证书(集群内其中一个master节点执行) ```shell $ sudo kubeadm init phase upload-certs --upload-certs 2> /dev/null | tail -n1 d1fdb62b88827a0be9a40b90061f0d541a64a065c62c62a02d5844fcb115b3f4 ``` 3. 加入集群命令(待加入集群主机) ```shell # 以下三行是第一条命令输出结果 kubeadm join 172.139.20.100:6443 \ --token xg1pus.an5hon6cfx97rfuu \ --discovery-token-ca-cert-hash sha256:37584a6ac155be6024504dab60c420bed392b40d1ab7d59f4f85f2ec6d8ed844 \ # certificate-key值:第二条命令输出结果 --certificate-key d1fdb62b88827a0be9a40b90061f0d541a64a065c62c62a02d5844fcb115b3f4 \ # 指定该节点为控制平面 --control-plane \ # cri sock的位置 --cri-socket /run/containerd/containerd.sock \ # 节点名称 --node-name 待加入集群IP地址 ``` ### node节点 1. 前两步与master节点一致 2. 拼接命令并加入集群(待加入集群主机) ```shell # 以下三行是第一条命令输出结果 kubeadm join 172.139.20.100:6443 \ --token xg1pus.an5hon6cfx97rfuu \ --discovery-token-ca-cert-hash sha256:37584a6ac155be6024504dab60c420bed392b40d1ab7d59f4f85f2ec6d8ed844 \ # certificate-key值:第二条命令输出结果 --certificate-key d1fdb62b88827a0be9a40b90061f0d541a64a065c62c62a02d5844fcb115b3f4 \ # cri sock的位置 --cri-socket /run/containerd/containerd.sock \ # 节点名称 --node-name 待加入集群IP地址 ``` > 【说明】与加入master节点,少一个 `--control-plane` 参数。