1. 环境的准备
1.1. 是否支持虚拟化
sysctl -a | grep -E --color 'machdep.cpu.features|VMX'
如果结果中出现了VMX,就说明VT-x功能是打开的
1.2. 检查其他虚拟化软件
如果安装了HyperKit,VitrualBox或者VMwareFusion之外的其他hypervisor,有可能会产生冲突。
1.3. 安装docker-desktop
在这里下载,或者直接点击这里,安装的时候各种下一步就可以了。
2 安装minikube
2.1. 安装brew,参考这里
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
2.2. 修改brew的仓库为aliyun,参考这里
# 替换brew.git:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
# 替换homebrew-core.git:
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
# 应用生效
brew update
# 替换homebrew-bottles:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc
2.3. 安装kubectl
brew install kubectl
或者
brew install kubernetes-cli
- 也可以从官方直接下载编译好的kubectl命令,参考这里
2.4. 安装Hypervisor
我们可以选择HyperKit(Docker的产品), VirtualBox(微软的产品),VMware Fusion(VMware的产品)之一。我们不用手动安装,如果没有安装过这三个产品之一的话,下一步安装minikube的时候会直接安装的,我们无需做任何操作。
2.5. 安装minikube
brew install minikube
- 当然也可以使用编译好的包,参考这个
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 && chmod +x minikube
sudo mv minikube /usr/local/bin
3. 启动和停止
3.1. 启动
如果我们默认启动的话,他会去连Google的仓库,所以我们需要手动指定他的仓库是aliyun
minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
minikube是支持多种虚拟化引擎的,比如virtual-box,vmware fusion或者docker都可以,如果我们没有指定,那么默认是docker,如果我们想指定其他引擎,比如使用vmfusion,就需要使用
minikube start --driver=<driver_name>
3.2. 查看状态
minikube status
3.3. 停止
minikube stop
4. 部署一个应用
- 创建nginx的deployment
kubectl create deployment nginx --image=nginx
- 暴露端口
kubectl expose deployment nginx --type=LoadBalancer --port=80
service/nginx exposed
- 查看服务
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 12m
nginx LoadBalancer 10.103.91.33 <pending> 80:31382/TCP 6s
- 访问我们的服务
minikube service nginx
|-----------|-------|-------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------|-------------|---------------------------|
| default | nginx | | http://192.168.64.2:31382 |
|-----------|-------|-------------|---------------------------|