在CentOS上部署Kubernetes(k8s)集群通常涉及多个步骤,包括设置网络、安装必要的软件包、配置kubelet、kube-proxy和API服务器等。以下是一个基本的脚本示例,用于在CentOS 7上部署一个单节点的Kubernetes集群。
请注意,这个脚本是为教育目的而设计的,生产环境中的部署会更加复杂,需要考虑安全性、高可用性、网络策略等因素。
#!/bin/bash
# 禁用Swap
swapoff -a
# 设置内核参数
cat <<EOF >/etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
# 安装Docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
# 启动Docker并设置开机自启
systemctl start docker
systemctl enable docker
# 安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl
# 安装kubelet和kubeadm
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
# 初始化Kubernetes集群
kubeadm init --pod-network-cidr=10.244.0.0/16
# 设置kubectl配置以使用集群
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 安装网络插件,这里以Flannel为例
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 检查Pod网络是否正常运行
kubectl get pods --all-namespaces | grep flannel
echo "Kubernetes cluster has been initialized successfully!"
在运行此脚本之前,请确保您的CentOS系统已经更新到最新版本,并且您有root权限或者可以使用sudo来执行命令。
这个脚本会执行以下操作:
请记住,这个脚本仅适用于单节点集群的初始化。在生产环境中,您可能需要部署多个控制平面节点和工作节点,并且需要考虑更多的配置选项和安全措施。