他是运行kubernetes集群最简单、最快捷的途径 ,对于测试kubernets和本地开发应用非常有用。
官网:https://minikube.sigs.k8s.io/docs/
centos:CentOS Linux release 8.5.2111
必须要开启虚拟化
1、安装minikube
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
2、下载安装 kubectl
# 安装最新版:
sudo curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
sudo chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# 浏览器获取最新版本:
https://storage.googleapis.com/kubernetes-release/release/stable.txt
https://storage.googleapis.com/kubernetes-release/release/v1.31.0/bin/linux/amd64/kubectl
3、安装依赖
minikube需要VirtualBox环境
下载地址:https://download.virtualbox.org/virtualbox/7.1.4/
# rpm安装方式:
wget https://download.virtualbox.org/virtualbox/7.1.4/VirtualBox-7.1-7.1.4_165100_el8-1.x86_64.rpm
sudo rpm -ivh VirtualBox-7.1-7.1.4_165100_el8-1.x86_64.rpm
# virtualbox源安装
sudo curl -o /etc/yum.repos.d/virtualbox.repo https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
sudo dnf clean all
sudo dnf makecache
sudo dnf install VirtualBox-7.1
VBoxManage --version
# 若缺依赖:
sudo dnf install epel-release
sudo dnf install libxcb-cursor
# 安装docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
sudo useradd -m dockeruser && sudo passwd dockeruser
sudo usermod -aG docker dockeruser && newgrp docker
su - dockeruser
4、启动minikube
# 启动一个新的 Minikube 集群,并使用 VirtualBox 创建一个虚拟机,在虚拟机中部署 Kubernetes 环境,并设置 Docker 作为容器运行时,而不是默认的 containerd。
su - dockeruser
minikube start --driver=virtualbox --container-runtime=docker
# 查看状态
minikube status
# 遇到报错:
sudo systemctl status vboxdrv
[sudo] dockeruser 的密码:
dockeruser 不在 sudoers 文件中。此事将被报告。
# 解决:
在 CentOS 8 中,wheel组的成员可以使用sudo执行命令
usermod -aG wheel dockeruser && newgrp wheel
# 遇到报错:
VBoxManage: error: Failed to create the VirtualBox object!
VBoxManage: error: Code NS_ERROR_FAILURE (0x80004005) - Operation failed (extended info not available)
VBoxManage: error: Most likely, the VirtualBox COM server is not running or failed to start.
# 解决:
reboot
5、启动minikube dashborad
sudo yum install xdg-utils
# 启动Minikube的仪表板
su - dockeruser
minikube dashboard # 此命令会显示一个 URL
# 启用metrics-server插件
minikube addons enable metrics-server
minikube dashboard # 此命令会显示一个 URL
# 如果 Kubernetes 节点无法直接从 Docker Hub 拉取镜像,您可以手动拉取镜像并将其加载到 Minikube 中。
docker pull kubernetesui/metrics-scraper:v1.0.8
docker pull docker.io/kubernetesui/dashboard:v2.7.0
minikube image load kubernetesui/metrics-scraper:v1.0.8
minikube image load kubernetesui/dashboard:v2.7.0
# 重新尝试启动 dashboard
kubectl -n kubernetes-dashboard rollout restart deployment kubernetes-dashboard
# 确认镜像是否在 Minikube 环境中
minikube ssh
docker images
# 强制使用本地镜像
kubectl -n kubernetes-dashboard get deployment kubernetes-dashboard -o yaml > dashboard-deployment.yaml
kubectl -n kubernetes-dashboard get deployment dashboard-metrics-scraper -o yaml > dashboard-metrics-scraper.yaml
修改文件,内容在最后
# 保存并应用配置文件
kubectl apply -f dashboard-deployment.yaml
kubectl apply -f dashboard-metrics-scraper.yaml
kubectl get pods -n kubernetes-dashboard # 查看状态
minikube dashboard # 会显示一个url,因为是纯命令行方式,所有会提示:“因HOST_BROWSER错误而退出:打开浏览器失败:exit status。”
# 将Kubernetes API代理到指定端口和地址,允许任何主机访问
nohup kubectl proxy --port=10888 --address='192.168.10.12' --accept-hosts='^.*' > ./nohup.out &
浏览器登录:http://192.168.10.12:10888/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/workloads?namespace=default
6、测试小案例
# 部署:
kubectl create deployment hello-minikube --image=registry.aliyuncs.com/google_containers/echoserver:1.10
# 将该pod 暴露他的端口为8080
kubectl expose deployment hello-minikube --type=NodePort --port=8080
# 查看状态:kubectl get pod
# 查看url:
minikube service hello-minikube --url
# 将端口转发到本机的端口,这样供给外界访问
kubectl port-forward --address 0.0.0.0 service/hello-minikube 7080:8080
浏览器访问:192.168.10.12:7080
7、手动创建 YAML 文件
dashboard-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubernetes-dashboard
namespace: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
spec:
containers:
- name: kubernetes-dashboard
image: docker.io/kubernetesui/dashboard:v2.7.0
ports:
- containerPort: 9090
args:
- --namespace=kubernetes-dashboard
- --enable-skip-login
- --disable-settings-authorizer
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
volumeMounts:
- mountPath: /tmp
name: tmp-volume
volumes:
- name: tmp-volume
emptyDir: {}
serviceAccountName: kubernetes-dashboard
nodeSelector:
kubernetes.io/os: linux
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
dashboard-metrics-scraper
apiVersion: apps/v1
kind: Deployment
metadata:
name: dashboard-metrics-scraper
namespace: kubernetes-dashboard
labels:
k8s-app: dashboard-metrics-scraper
spec:
replicas: 1
selector:
matchLabels:
k8s-app: dashboard-metrics-scraper
template:
metadata:
labels:
k8s-app: dashboard-metrics-scraper
spec:
containers:
- name: dashboard-metrics-scraper
image: docker.io/kubernetesui/metrics-scraper:v1.0.8
ports:
- containerPort: 8000
resources:
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 50m
memory: 50Mi
livenessProbe:
httpGet:
path: /metrics
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 5
volumeMounts:
- mountPath: /tmp
name: tmp-volume
volumes:
- name: tmp-volume
emptyDir: {}
nodeSelector:
kubernetes.io/os: linux
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
===