在Ubuntu上搭建Kubernetes集群(基于kubeadm)
Kubernetes(K8s)是一个开源容器编排平台,kubeadm是其官方推荐的快速搭建集群的工具。以下是在Ubuntu系统上搭建Kubernetes集群的详细步骤,涵盖环境准备、组件安装、集群初始化及验证等关键环节。
master-node、worker-node1),并通过/etc/hosts文件配置IP与主机名映射(避免DNS依赖)。sudo swapoff -a # 临时关闭 sudo sed -i '/ swap / s/^(.*)$/#\1/g' /etc/fstab # 永久禁用(注释fstab中的swap行) ntp或chrony工具同步(如sudo apt install chrony && sudo systemctl enable --now chrony)。Kubernetes依赖容器运行时管理容器,Docker是常用选择(也可替换为containerd):
# 添加Docker官方GPG密钥和存储库 sudo apt update sudo apt install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # 安装Docker CE并启动服务 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable --now docker # 配置Docker使用systemd作为cgroup驱动(兼容Kubernetes) sudo mkdir -p /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": {"max-size": "100m"}, "storage-driver": "overlay2" } EOF sudo systemctl restart docker 在所有节点(Master/Worker)上执行以下操作,安装kubelet、kubeadm、kubectl:
# 添加Kubernetes官方APT仓库 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 apt-mark hold kubelet kubeadm kubectl # 锁定版本 Master节点是集群的控制平面,负责管理节点、调度Pod等核心功能:
# 初始化集群(指定Pod网络CIDR,需与后续网络插件匹配) sudo kubeadm init --pod-network-cidr=192.168.0.0/16 # 配置kubectl(将Master节点的kubeconfig复制到用户目录) mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 安装网络插件(以Calico为例,支持网络策略) kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 验证Master节点状态(应显示“Ready”) kubectl get nodes Worker节点负责运行应用Pod,通过kubeadm join命令将Worker节点加入集群:
token和discovery-token-ca-cert-hash):kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 在Master节点上执行以下命令,确认集群是否搭建成功:
# 查看节点状态(所有节点应为“Ready”) kubectl get nodes # 查看集群组件状态(应均为“Running”) kubectl get componentstatuses # 部署测试应用(如Nginx) kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort kubectl get pods,svc # 查看Pod和Service状态 kubeadm join命令中的token过期,可在Master节点重新生成:kubeadm token create kubeadm token list # 获取新token openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' 通过以上步骤,即可在Ubuntu系统上搭建一个基础的Kubernetes集群。后续可根据需求扩展节点、部署应用或配置高级功能(如Ingress、StorageClass等)。