基于 minikube 初始化 K8s 环境
Minikube 可以在本地机器上模拟一个完整的 Kubernetes 环境,从而进行开发、测试和学习,无需依赖云服务或远程集群。这使得 Kubernetes 的学习曲线变得更平缓,并且方便开发人员在本地调试和测试他们的应用程序
常见的问题
在使用 minikube 的时候我们经常会遇到各种问题,比如
- docker 不能使用 root 用户
- 下载镜像失败
text
Unable to find image 'gcr.io/k8s-minikube/kicbase:v0.0.44@sha256:eb04641328b06c5c4a14f4348470e1046bbcf9c2cbc551486e343d3a49db557e' locally
docker: Error response from daemon: Get "https://gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
搭建流程
安装 minikube
各种平台安装参考官方文档(https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download)
以下命令是 linux x86-64 stable 二进制安装方式
bash
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
验证 minikube 是否安装成功
bash
minikube version
# 输出相关信息就表示安装成功
minikube version: v1.33.1
commit: 5883c09216182566a63dff4c326a6fc9ed2982ff
启动一个 K8s 单机集群
gcr.io/k8s-minikube/kicbase:v0.0.44 这个镜像要是下载不下来可以采用国内相关镜像 docker pull 下载下来进行替换
下载基础镜像
bash
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.44
打 tag
bash
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.44 gcr.io/k8s-minikube/kicbase:v0.0.44
启动集群
bash
minikube start --registry-mirror=https://registry.docker-cn.com,https://shraym0v.mirror.aliyuncs.com --embed-certs=true --image-mirror-country=cn --base-image=gcr.io/k8s-minikube/kicbase:v0.0.44 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
kubectl 安装
bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
验证 kubectl 是否安装成功
bash
kubectl version
# 输出版本信息表示安装成功
Client Version: v1.30.3 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: v1.30.0
部署一个 pod 验证集群
编写 pod yaml 文件
yml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
apply 文件
bash
kubectl apply -f pod.yml
查看 pod 事件消息
bash
kubectl describe pod
输出如下