在Ubuntu上从零开始搭建Kubernetes(简称K8s)环境是一项既充满挑战又极具价值的任务,它能让你深入理解Kubernetes的核心组件与工作原理。以下是详细的步骤指南,旨在帮助你在Ubuntu系统上顺利部署Kubernetes。
准备工作
确保你的Ubuntu系统是最新的,并且满足Kubernetes的最低系统要求。推荐使用Ubuntu 20.04 LTS或更高版本。首先,更新系统并安装必要的依赖:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl apt-transport-https gnupg2 software-properties-common
安装Docker
Kubernetes依赖Docker作为其容器运行时环境。遵循以下步骤安装Docker CE:
- 添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加Docker仓库到你的系统源列表:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 更新软件包索引并安装Docker CE:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
启动Docker并设置开机启动:
sudo systemctl start docker
sudo systemctl enable docker
安装Kubernetes组件
Kubernetes由多个组件组成,包括kubelet、kubectl和kubeadm。我们使用kubeadm来简化集群的部署过程。
- 添加Kubernetes的apt仓库:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
- 更新软件包索引并安装kubeadm、kubectl和kubelet:
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 防止自动升级导致的问题
配置Kubernetes Master节点
选择一台机器作为Master节点,执行以下步骤:
- 初始化Master节点,这里以使用Flannel网络插件为例:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后,会输出一些重要的命令,包括如何配置kubectl以及加入worker节点的命令,务必保存这些信息。
- 配置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 nodes
kubectl get pods --all-namespaces
如果一切顺利,你应该能看到Master节点的状态和Flannel相关的Pod运行正常。
添加Worker节点(如有需要)
如果有额外的Ubuntu机器作为Worker节点,使用之前Master初始化输出的加入命令执行即可。
结论
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。