如何在本地环境中通过 Docker、Minikube 和 kubectl 构建一个 Kubernetes 集群。Kubernetes 是目前主流的容器编排平台,而 Minikube 提供了一个轻量级的本地集群环境,方便开发者和学习者进行实验和测试。
1. 安装 Docker
首先,您需要在系统中安装 Docker。运行以下命令以下载并安装 Docker:
# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
安装完成后,将普通用户添加到 docker
用户组中,以便无需使用 sudo
来运行 Docker 命令:
# 配置普通用户加入到 docker 用户组
sudo usermod -aG docker $USER
执行以上命令后,您需要退出并重新登录才能使更改生效。
2. 安装 Minikube
Minikube 是用于在本地启动 Kubernetes 集群的工具。运行以下命令以安装 Minikube:
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube version
3. 安装 kubectl
- 更新系统软件包列表,并安装必要的依赖:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
- 添加 Kubernetes 的 APT 仓库 GPG 密钥:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
- 配置 Kubernetes APT 仓库源:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list
- 更新软件包列表并安装
kubectl
:
sudo apt-get update
sudo apt-get install -y kubectl
4. 启动 Minikube
安装完成后,启动 Minikube 集群:
minikube start --driver=docker
5. 验证安装
使用以下命令检查 Minikube 和 kubectl 的状态:
minikube status
kubectl get nodes
如果输出显示集群状态正常,Minikube 已成功启动。
6. 常用 kubectl
命令
- 查看所有命名空间中的所有 Pod:
kubectl get pods --all-namespaces
- 查看默认命名空间中的所有 Pod:
kubectl get pods
- 查看服务:
kubectl get services
- 查看集群节点:
kubectl get nodes
- 查看所有 Deployments:
kubectl get deployments
- 查看资源使用情况(如节点的 CPU、内存等):
kubectl top nodes
- 删除一个 Pod:
kubectl delete pod <pod-name>
- 启动一个新的 Pod(如运行一个 nginx 容器):
kubectl run nginx --image=nginx
7. 访问 Kubernetes Dashboard(可选)
如果您想进行可视化管理,可以访问 Kubernetes Dashboard:
minikube dashboard
8. 测试 Nginx 部署
- 创建一个 Nginx 部署:
kubectl create deployment nginx --image=nginx
- 将 Nginx 部署暴露到集群外部:
kubectl expose pod nginx --type=NodePort --name=nginx-service --port=80
- 查看服务的端口分配:
kubectl get services
- 获取 Minikube 的 IP 地址:
minikube ip
- 使用浏览器测试 Nginx 服务:
curl http://<IP>:<端口>
9. 临时暴露端口供其他人访问,使用 kubectl port-forward
访问 Nginx
- 确保 Nginx Pod 正在运行:
kubectl create deployment nginx --image=nginx
- 查找 Nginx Pod 的名称:
kubectl get pods -l app=nginx
- 使用
kubectl port-forward
进行端口转发:
kubectl port-forward --address 0.0.0.0 <pod-name> <host-port>:<container-port>
例如,将本地的 8080
端口转发到 Nginx 容器的 80
端口:
kubectl port-forward --address 0.0.0.0 nginx-5869d7778c-qdfr2 8080:80
- 保持终端窗口打开。
- 从外部访问 Nginx:
http://<IP>:8080
10. 注意事项
kubectl port-forward
端口转发是临时的,关闭终端窗口时会断开连接。- 使用
--address 0.0.0.0
将服务暴露到所有网络接口,确保在公共网络中谨慎使用。 - Pod 故障时,需要重新执行端口转发命令。
发表回复