源地址:https://minikube.sigs.k8s.io/docs/start/
一。启动minikube
minikube start //默认启动,可以加后面几种参数,自己看环境选择
2.驱动参数---指定驱动名称
说明: 若要为
minikube start
设置--vm-driver
,在下面提到<驱动名称>
的地方, 用小写字母输入你安装的 hypervisor 的名称。 指定 VM 驱动程序 列举了--vm-driver
值的完整列表。
minikube start --vm-driver=<驱动名称>
sudo su - shitingbao
minikube start --vm-driver=<驱动名称> --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
# 举个例子
minikube start --vm-driver=none --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
//使用docker驱动要加这个参数
minikube start --driver=docker
注意
:这里要注意的是,使用none参数需要你的root权限,如果你的vm-driver使用的docker,那就不能在root下运行,他会报要给错误,这里不同的参数使用权限还不同,这里使用none作为例子。
运行成功后会出现类似下面这个
如果不使用镜像,就可能会出现下面这个无法拉取镜像的问题
一旦 minikube start
完成,你可以运行下面的命令来检查集群的状态:
minikube status
如果你的集群正在运行,minikube status
的输出结果应该类似于这样:
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
这里他会在docker中运行一些基本的容器,你可以在docker ps中看到一些正在运行的容器,大致是这样
成功
做到这一步,说明你的kubernetes已经运行成功了。接下来可以做一些其他操作。
1.下载对应的 kubectl 工具(已经是最新的 kubectl 可省略)
minikube kubectl -- get po -A
1.1 使用 kubectl create 命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行 Container(下面用nginx镜像做例子,不使用官方例子,因为亲和一些),需要提前 docker pull nginx
kubectl create deployment hello-nginx --image=nginx:latest
这句话代表运行一个名称为 hello-nginx 的 pod 内为 nginx 镜像的 Deployment
1.2 查看 Deployment:
kubectl get deployments
输出结果类似于这样:
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 1m
1.3 查看 Pod:
kubectl get pods
输出结果类似于这样:
NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
1.5查看集群事件:
kubectl get events
1.6 查看 kubectl 配置:
kubectl config view
注意:默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。 要使得
hello-node容器可以从 Kubernetes 虚拟网络的外部访问,你必须将 Pod 暴露为 Kubernetes Service
。
2. 使用 kubectl expose
命令将 Pod 暴露给公网
官方教程:https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/expose/expose-interactive/
命令详情地址:http://docs.kubernetes.org.cn/475.html
这个不同的 type 都可以 ,详细区别去官方解释看
kubectl expose deployment hello-nginx --type=NodePort --port=80 --target-port=80
注意:创建新服务并将其公开给外部通信,我们将使用带有 NodePort 的expose命令作为参数(minikube还不支持LoadBalancer选项)。
查看你创建的 Service:
kubectl get services
输出结果类似于这样:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.108.144.78 <pending> 80:30369/TCP 21s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
注意:
1.NodePort : 会随机在服务器上选一个端口作为对应,这里默认的 nginx 的 80 端口指的是容器内的,30369 是实际的服务器端口(外部访问的端口)
对于支持负载均衡器的云服务平台而言,平台将提供一个外部 IP 来访问该服务。 在 Minikube 上,LoadBalancer 使得服务可以通过命令 minikube service 访问。
查看 nginx 访问地址
运行下面的命令:
minikube service hello-nginx(使用这个要注意外部的调用)
这里的这个地址就是你本地的地址,可以直接访问试试
对应宿主机的端口转发
或者,使用kubectl转发端口,将目标80 端口,就是上面那个容器实际的 nginx 端口关联到 宿主机的 8080 上,外部直接访问 8080 即可访问该容器的nginx(curl
127.0.0.1:8080)。注意: --address 0.0.0.0 是说都可以访问,不加这个只能本地 127.0.0.1 访问
kubectl port-forward --address 0.0.0.0 service/hello-nginx 8080:80
停止运行
在确认 Minikube 与 hypervisor 均正常工作后,你可以继续使用 Minikube 或停止集群。要停止集群,请运行:
minikube stop
清理本地状态
如果你之前安装过 Minikube,即使已经停止了,再次运行 minikube start
会返回一个错误:
machine does not exist
那么,你需要清理 minikube 的本地状态(因为已经运行过会有上一次的信息,下一次启动需要先清理上一次的信息):
minikube delete
or
minikube delete --all
这时候再去运行start
命令就可以正常启动,也就是说,执行stop后需要执行delete删除,下次才能start。