美文网首页
minikube 启动一个 nginx 服务

minikube 启动一个 nginx 服务

作者: 哆啦在这A梦在哪 | 来源:发表于2020-08-18 16:05 被阅读0次

源地址:https://minikube.sigs.k8s.io/docs/start/

一。启动minikube

minikube start    //默认启动,可以加后面几种参数,自己看环境选择

2.驱动参数---指定驱动名称

说明: 若要为 minikube start 设置 --vm-driver,在下面提到 <驱动名称> 的地方, 用小写字母输入你安装的 hypervisor 的名称。 指定 VM 驱动程序 列举了 --vm-driver 值的完整列表。

minikube start --vm-driver=<驱动名称>

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作为例子。

运行成功后会出现类似下面这个


image.png

如果不使用镜像,就可能会出现下面这个无法拉取镜像的问题


image.png

一旦 minikube start 完成,你可以运行下面的命令来检查集群的状态:

minikube status

如果你的集群正在运行,minikube status 的输出结果应该类似于这样:

host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

这里他会在docker中运行一些基本的容器,你可以在docker ps中看到一些正在运行的容器,大致是这样


image.png

成功

做到这一步,说明你的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/
为 hello-nginx 的nginx创建service,并通过Service的 port 80端口转发至容器的target-port 80端口上。
注意:port 对应的端口必须是这个镜像项目实际监听的端口,比如我这里用的是 nginx 镜像,默认监听的是 80 ,如果你用官方例子的 8080 就会无法访问,或者出现请求被拒绝的错误。
命令详情地址:http://docs.kubernetes.org.cn/475.html
这个不同的 type 都可以 ,详细区别去官方解释看

kubectl expose deployment hello-nginx --type=NodePort --port=80 --target-port=80

kubectl expose deployment hello-nginx --type=LoadBalancer --port=80 --target-port=80

到这一步,直接访问 80 端口就可访问 nginx 了。后面那几步是为了服务的转发,集群的暴露等操作。

查看你创建的 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

对于支持负载均衡器的云服务平台而言,平台将提供一个外部 IP 来访问该服务。 在 Minikube 上,LoadBalancer 使得服务可以通过命令 minikube service 访问。

运行下面的命令:

minikube service hello-nginx

或者,使用kubectl转发端口

kubectl port-forward service/hello-nginx 80:80```

#停止运行
在确认 Minikube 与 hypervisor 均正常工作后,你可以继续使用 Minikube 或停止集群。要停止集群,请运行:

minikube stop


## 清理本地状态[](https://kubernetes.io/zh/docs/tasks/tools/install-minikube/#cleanup-local-state)

如果你之前安装过 Minikube,即使已经停止了,再次运行 `minikube start` 会返回一个错误:

machine does not exist


那么,你需要清理 minikube 的本地状态(因为已经运行过会有上一次的信息,下一次启动需要先清理上一次的信息):

minikube delete
or
minikube delete --all

这时候再去运行`start`命令就可以正常启动,也就是说,执行stop后需要执行delete删除,下次才能start。

相关文章

网友评论

      本文标题:minikube 启动一个 nginx 服务

      本文链接:https://www.haomeiwen.com/subject/aycjdktx.html