minikube 启动一个 nginx 服务 deployment

源地址: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作为例子。

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


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/

命令详情地址: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        80:30369/TCP   21s
kubernetes   ClusterIP      10.96.0.1               443/TCP          23m

注意:

1.NodePort : 会随机在服务器上选一个端口作为对应,这里默认的 nginx 的 80 端口指的是容器内的,30369 是实际的服务器端口(外部访问的端口)

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

查看 nginx 访问地址

运行下面的命令:

minikube service hello-nginx(使用这个要注意外部的调用)
image.png

这里的这个地址就是你本地的地址,可以直接访问试试


image.png

对应宿主机的端口转发

或者,使用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。

你可能感兴趣的:(minikube 启动一个 nginx 服务 deployment)