
kubectl create deployment hello-minikube1 --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10
kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8000
export PORT=$(kubectl get svc hello-minikube1 -o go-template='{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}')
# 查看端口
echo $PORT
minikube service hello-minikube1
kubectl delete deployment -n default hello-minikube1 --force --grace-period=0
Minikube 自带了一个内置应用列表,包括诸如 Istio、Ingress 等,可以方便快速部署插件。
minikube addons list
输出如下: 
minikube addons enable [addon name]
minikube start --addons [addon name] --addons [addon name]
minikube addons open [addon name]
minikube addons disable [addon name]

NodePort 方式是访问服务最基础的方式,顾名思义,就是将端口映射到本地,并通过本地的 IP + 映射的端口访问服务放出的 endpoint,这种方式下,服务会共用 VM 的 IP。
minikube 内置的 service 命令可以快速访问服务放出的endpoint,并在浏览器中打开
minikube service --url [service-name]
通过minikube ip 命令可以获取到虚拟机的IP地址,执行以下命令,可以获取到服务映射的 nodePort 端口
kubectl get service --output='jsonpath="{.spec.ports[0].nodePort}"'
一般来说,minikube 包括的端口范围为 30000-32767,如果不够的话,可以通过如下命令进行扩展
minikube start --extra-config=apiserver.service-node-port-range=1-65535
LoadBalancer 方式,是将服务暴露到公网中的标准方法,使用这种方法,每一个服务都有其独立的IP。
以 LoadBalancer 方式暴露的服务需要通过 minikube tunnel 命令访问,并且必须在一个独立的终端窗口保持 LoadBalancer 运行,使用 Ctrl-C 可以退出进程,但是相关的路由信息将会被情况
在独立的终端运行 tunnel,它会在k8s的CIDR中新增路由规则,将集群的IP地址作为网关,tunnel 命令会将服务的外部访问IP直接暴露给主机操作系统上运行的所有程序。
minikube tunnel
kubectl create deployment hello-minikube --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10
检查服务:
kubectl get pod

kubectl expose deployment hello-minikube --type=LoadBalancer --port=8000
tunnel 终端窗口会弹出:
service/hello-minikube exposed
kubectl get svc
正常返回如下:
![]()
注意: 如果没有开启minikube tunnel 窗口的话,服务的 EXTERNAL-IP 将会显示 pending
打开浏览器,访问http://127.0.0.1:8000,(确保服务没有proxy设置)
使用create deployment的方式创建的服务,然后使用LoadBalancer对服务进行暴露,才能给到外部进行访问。访问可以使用NodePort和LoadBalancer两种访问方式