本地电脑安装minikube

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本地电脑安装minikube相关的知识,希望对你有一定的参考价值。

参考技术A Minikube 是一个可以在本地轻松运行 Kubernetes 的工具。Minikube 会在您的笔记本电脑中的虚拟机上运行一个单节点的 Kubernetes 集群,以便用户对 Kubernetes 进行试用或者在之上进行 Kubernetes 的日常开发( ---来自于官网的描述 )

VM Driver支持多种类型,详见 官网

启动日志

执行上述命令时,会出现下面命令废弃的提示信息:
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

浏览器中显示Dashboard

参考
https://kubernetes.io/docs/tasks/tools/install-minikube/

minikube:无法连接本地部署的 nginx 服务

【中文标题】minikube:无法连接本地部署的 nginx 服务【英文标题】:minikube : not able to connect a locally deployed nginx service 【发布时间】:2016-10-29 00:06:24 【问题描述】:

我已经在我的 ubuntu 16.04 机器上安装了 minikube 并启动了一个集群,并带有一条消息

"Kubernetes is available at https://192.168.99.100:443"

接下来,我用下面的命令部署了nginx服务

> kubectl.sh run my-nginx --image=nginx --replicas=2 --port=80 --expose

> kubectl.sh get  pods -o wide
NAME                        READY     STATUS    RESTARTS   AGE       NODE
my-nginx-2494149703-8jnh4   1/1       Running   0          13m       127.0.0.1
my-nginx-2494149703-q09be   1/1       Running   0          13m       127.0.0.1

> kubectl.sh get  services -o wide
NAME         CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE       SELECTOR
kubernetes   10.0.0.1     <none>        443/TCP   14m       <none>
my-nginx     10.0.0.83    <none>        80/TCP    13m       run=my-nginx

> kubectl.sh get  nodes -o wide
NAME        STATUS    AGE
127.0.0.1   Ready     16m

问题:

1) 节点 127.0.0.1 是我的本地开发机器吗?这让我最困惑。

2) 我的以下理解是否正确:集群(节点、kubernetes API 服务器)的内部 IP 地址为 10.0.0.x,其对应的外部 IP 地址为 192.168.99.x。然后,这 2 个 pod 的 IP 地址将在 10.0.1.x 和 10.0.2.x 之类的范围内?

3) 为什么服务的外部 IP 不存在?甚至没有,对于 Kubernetes 服务。这里的192.168.99.43不是外网IP吗?

4) 最重要的是,如何从笔记本电脑连接到 nginx 服务?

【问题讨论】:

【参考方案1】:

1) 节点 127.0.0.1 是我的本地开发机器吗?这让我 最让我困惑的。

当一个节点注册时,您提供要注册的 IP 或名称。默认情况下,节点只是注册127.0.0.1。这是引用您运行 linux 的 VM,而不是您的主机。

2)我的以下理解是否正确:集群(节点, kubernetes API 服务器)在 10.0.0.x 和它们的内部 IP 地址 对应的外部 IP 地址为 192.168.99.x。 2个豆荚将 那么 IP 地址在 10.0.1.x 和 10.0.2.x 之类的范围内吗?

是的,10.0.0.x 网络是您的覆盖网络。 192.168.99.x 是您在集群外部可见的“公共”地址。

3) 为什么服务的外部 IP 不存在?甚至没有,因为 Kubernetes 服务。这里的192.168.99.43不是外网IP吗?

外部 IP 通常用于通过特定 IP 传入流量。 kubernetes 服务使用 clusterIP 服务类型,这意味着它只对内部集群可见。

4) 最重要的是,我如何从我的 笔记本电脑?

查看 nginx 服务最简单的方法是输入NodePort,然后部署该服务。之后,描述服务以获取分配的端口(或者在创建后它也会告诉您)。然后点击你的虚拟机的 ip 并提供自动分配的 NodePort。

e.g. http://192.168.99.100:30001

【讨论】:

谢谢史蒂夫!访问服务的另一种方法(如果您不想使用 NodePort)是使用 kubectl port-forward 访问底层 pod。例如,您可以运行:kubectl port-forward mypod 8080:8080,使 pod 在localhost:8080上可用 谢谢史蒂夫。关于您的第一个答案,您的意思是说 127.0.0.1 是节点(在这种情况下为 VM)的唯一 nw 接口,其中的 pod 可以通信,对吗?其次,当我运行 'kubectl exec my-nginx-yczg9 -- sh -c "ifconfig -a'' 时,它会为 eth0 提供一些 IP,例如 172.17.0.4。现在,据我了解,my-nginx-yczg9 是pod 和一个 pod 可以有 N 个容器。所以可以公平地说 172.17.0.4:80 是一个 Pod IP(虚拟 IP-端点?),它将被代理到在 pod 内运行的适当 nginx 容器,并且该容器将具有IP 在 docker 子网内? 谢谢 diorec,端口转发命令在这里如何工作?如果我错了,请纠正我:根据我的理解,我的机器(主机)本地主机 ip(即 127.0.0.1:8080)将充当 192.168.99.100:30001 的代理?其中命令将是 kubectl port-forward mypod 8080:30001 127.0.0.1 是节点的名称(您唯一的节点)。它正在运行集群的所有组件。网络内的 Pod 有自己的 ip,这些 ip 只能在集群内寻址。那就是您提到的 172.* 地址。这有帮助吗? 如果您想在不使用 nodePort 的情况下将流量从本地环境路由到服务,请参阅此主题:***.com/a/42658974/4716370

以上是关于本地电脑安装minikube的主要内容,如果未能解决你的问题,请参考以下文章

2019年20+个Kubernetes工具盘点

安装指定版本的minikube

centos7.5安装minikube kubernetes

使用minikube搭建本地k8s集群

CentOS 7安装minikube

如何在本地电脑安装phpmyadmin及访问地址