环境准备:※
- 域名解析
- 互信
- 防火墙 ,selinux
- 关闭swap分区
- #时间同步
- #更新内核
配置内核路由转发和网桥过滤:
cat >> /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
#加载模块
modprobe br_netfilter
modprobe overlay
sysctl --system
##执行
sysctl -p /etc/sysctl.d/k8s.conf
#代理模式可能由iptable切换成ipvs通过ipset:
yum install -y ipset ipvsadm
#加载模块
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
#加载和检查
chmod 755 /etc/sysconfig/modules/ipvs.modules &&
bash /etc/sysconfig/modules/ipvs.modules &&
lsmod | grep -e ip_vs -e nf_conntrack
dockers和cri准备※
docker官方脚本安装:curl -fsSL https://get.docker.com | bash -s docker
cri-dockergit不必地址:https://github.com/Mirantis/cri-dockerd
wget对应的cri-docker包之后,yum安装即可,安装完毕后设置开机自启动docker和cridockers
修改/usr/lib/systemd/system/cri-docker.service配置文件:
vim /usr/lib/systemd/system/cri-docker.service
修改第十行,ExecStart字段,在/usr/bin/cri-docker后覆盖添加如下
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
#这里设置镜像地址,以及pause版本,这个版本可以在kubeadm config images list 看到
systemctl enable --now cri-docker
启动后会在/var/run产生套接字文件cri-dockerd.sock
集群部署※
配置安装源可以在官网看到源地址,也可以在国内例如阿里查到安装源地址,实际上官方地址替换版本号也可
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
安装 kubelet、kubeadm 和 kubectl,并启用 kubelet 以确保它在启动时自动启动:
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
配置kubelet的cgroup※
vim /etc/sysconfig/kubectl
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
systemctl enable kubelet
拉去所需镜像:※
默认安装这些镜像:
#镜像列表
kubeadm config images list
在使用docker+cri方案,拉去时需要指定docker的套接字文件
kubeadm config images pull --cri-socket unix:///var/run/cri-dockerd.sock
集群初始化※
kubeadm init --kubernetes-version=1.30.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.0.2.1 --cri-socket unix:///var/run/cri-dockerd.sock
执行完之后,更具提示执行结果前三行,然后再节点机器执行最后一行(在节点机器执行时也要加上套接字文件)--cri-socket=unix:///var/run/cri-dockerd.sock
网络插件※
其中flannel和calico这两款网络插件都是企业应用较为广泛的插件
这里用calico
打开官网:https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart
在侧栏,Install Calico-Kubernetes-Quickstart for Calico on Kubernetes部分能看到两个k8s配置文件
第一个正常执行
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml
第二个因为要修改网段,先下载下来修改后再执行
wget https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/custom-resources.yaml
编辑其中cidr网段为集群初始化设置的网段,再:kubectl apply -f custom-resources.yaml
安装配置dashboard※
去https://github.com/kubernetes/dashboard查看版本对应,ps最新版好像没有支持到1.30.2,
配置自动补全:※
安装bash-completion:
yum install -y bash-completion
将bash-completion提供的脚本生效
source /usr/share/bash-completion/bash_completion
生成kubectl的completion bash的脚本文件
kubectl completion bash > ~/.kube/completion.bash.inc
source ~/.kube/completion.bash.inc
设置开机自启动:
cat >> ~/.bash_profile << EOF
source /root/.kube/completion.bash.inc
EOF
检查
cat .bash_profile | tail -n 3
命名空间工具※
https://github.com/ahmetb/kubectx/releases/tag/v0.9.5
下载对应版本放到/usr/local/bin下·就行