在Linux上快速搭建Kubernetes,kubeadm(官方推荐)、microk8s(轻量便捷)、Kind(Docker容器节点)、k3s(轻量级)、minikube(单节点开发)是常用工具。其中,kubeadm适合需要自定义配置的用户,microk8s和Kind适合快速验证,k3s适合资源有限的边缘环境。
kubeadm是Kubernetes官方提供的集群部署工具,能快速搭建符合最佳实践的集群,以下是具体步骤:
sudo apt update && sudo apt upgrade -y)。sudo swapoff -a,并注释/etc/fstab中的swap行)。Kubernetes依赖Docker作为容器运行时,安装命令如下(以Ubuntu为例):
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
验证Docker是否运行:docker version。
这三个组件是Kubernetes的核心管理工具:
sudo apt update && sudo apt install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet
验证安装:kubeadm version、kubectl version --client。
在Master节点上执行初始化命令(以Kubernetes 1.28为例):
sudo kubeadm init --kubernetes-version=v1.28.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<Master节点IP>
初始化完成后,按照提示执行以下命令配置kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证Master节点状态:kubectl get nodes(此时Master节点状态为NotReady,需安装网络插件)。
Kubernetes需要网络插件实现Pod间通信,常用Flannel(简单易用):
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
再次验证节点状态:kubectl get nodes(状态变为Ready则表示Master节点搭建成功)。
在Worker节点上执行Master节点初始化时输出的kubeadm join命令(包含token和CA证书哈希):
sudo kubeadm join <Master节点IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
等待Worker节点状态变为Ready(kubectl get nodes)。
microk8s是Canonical推出的轻量级Kubernetes发行版,打包为Snap包,适合开发测试:
sudo snap install microk8s --classic
microk8s enable dashboard dns registry
microk8s status
若显示microk8s is running,则表示集群搭建成功。
Kind(Kubernetes IN Docker)将Kubernetes节点运行在Docker容器中,适合快速创建测试集群:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/
kind create cluster --name my-cluster
kubectl cluster-info --context kind-my-cluster
kubectl get nodes
若显示节点状态为Ready,则表示集群搭建成功。
通过以上步骤,可在Linux上快速搭建Kubernetes集群,满足开发、测试或轻量级生产需求。