本文使用的系统架构为Ubuntu 20.04/22.04, CPU架构为x86-64. kubectl 版本为1.23.0, minikube版本为1.28.0
1.安装kubectl
kubectl 是 kubernetes 的操作工具, 不管是 kubernetes 还是的 minikube,都用 kubectl 进行操作.阿里云上的 kubernetes 只需要给 kubectl 加上对应的配置即可操作阿里云上的 kubernetes 集群.参考通过kubectl连接Kubernetes集群
- 用 curl 命令下载最新发行版:
1
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl
- 安装kubectl(我是直接安装在 root 用户下的, 如果没有 root 权限也是可以操作的.具体看参考文献的官网教程)
1
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- 验证安装的kubectl版本
1
kubectl version --client
- 启动 shell 自动补全
1 2 3 4
# 如果是 zsh 的话 echo "source <(kubectl completion zsh)" >> ~/.zshrc # 如果是 bash 的话 echo "source <(kubectl completion bash)" >> ~/.bashrc
2. 安装minikube
minikube 是一个微型 kubernetes, 它具有 kubernetes 的大部分功能, s自己个人使用或者模拟生产环境用来搭建测试环境的话还是够用的(部分地区需要代理来进行安装)
- 安装 minikube
1 2
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 install minikube-linux-amd64 /usr/local/bin/minikube
- 启动 shell 自动补全
1 2 3 4
# 如果是 zsh 的话 echo "source <(minikube completion zsh)" >> ~/.zshrc # 如果是 bash 的话 echo "source <(minikube completion bash)" >> ~/.bashrc
- 启动 minikube 前需要先配置代理(proxyip 为代理的 ip, proxyport 为代理的端口)
1 2 3 4
```bash export HTTP_PROXY=http://$proxyip:$proxyport export HTTPS_PROXY=http://$proxyip:$proxyport export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.39.0/24,192.168.49.0/24
- 启动 minikube
需要注意的是 无法 root 用户下启动 minikube
踩过的坑: 启动 minikube 通过 –memory –cpus –disk-size 这3个参数指定要 minikube 的可用资源, 否则默认会比较小, 如果k8s内部的进程将设定的内存占满, 会导致 CPU 100%
如果需要通过外部访问, 需要添加参数–apiserver-ips= 填写需要对外暴露的ip
1
minikube start --driver=docker --image-mirror-country='cn' --logtostderr --extra-config=kubelet.cgroup-driver=systemd --memory 6000 --cpus 4 --disk-size=40g
如果遇到如下错误
1
❌ Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.23.0 requires conntrack to be installed in root's path
则需要安装 conntrack
1
sudo apt install conntrack
- 查看 minikube 状态
1
minikube status
预期输出结果
1 2 3 4 5 6
minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured
3.minikube 插件安装
展示所有可用插件
1
minikube addons listss
开启某个插件
1
minikube addons enable xxxx
关闭某个插件
1
minikube addons disable xxx
- ingress 插件安装 ingress是基于kubernetes的网关中间件, 它并不负责实际的消息分发/反向代理, 它是kubernetes和具体的网关容器(nginx/apache等)沟通的桥梁, 它默认采用的网关容器是nginx.
1
minikube addons enable ingress
预期输出结果
1 2
🔎 Verifying ingress addon... 🌟 The 'ingress' addon is enabled
- 检查ingress运行状态
1
kubectl get pods -n ingress-nginx
预期输出结果
1 2 3 4
NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-2q2xg 0/1 Pending 0 2m ingress-nginx-admission-patch-2q2xg 0/1 Pending 0 2m ingress-nginx-controller-7b7b9f9b7c-2q2xg 1/1 Running 0 2m
4. 可能需要使用到的脚本
- 清理minikube中的镜像
1 2
#!/bin/bash minikube image ls --format=table | awk '{print $6}' | xargs -I {} minikube image rm{}