- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些关于我的 minikube 集群的问题,特别是为什么需要隧道、隧道的实际含义以及端口号的来源。
我显然是一个完全的 kubernetes 初学者......并且没有大量的网络经验。
好的。我有以下推送到 docker hub 的 docker 镜像。这是一个 hello express 应用程序,它只是在 /
路径上打印出“Hello world”。
Docker文件:
FROM node:lts-slim
RUN mkdir /code
COPY package*.json server.js /code/
WORKDIR /code
RUN npm install
EXPOSE 3000
CMD ["node", "server.js"]
我有以下 pod 规范:
web-pod.yaml:
apiVersion: v1
kind: Pod
metadata:
name: web-pod
spec:
containers:
- name: web
image: kahunacohen/hello-kube:latest
ports:
- containerPort: 3000
以下服务:
网络服务.yaml
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: NodePort
selector:
app: web-pod
ports:
- port: 8080
targetPort: 3000
protocol: TCP
name: http
以及以下部署:
网络部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
spec:
replicas: 2
selector:
matchLabels:
app: web-pod
service: web-service
template:
metadata:
labels:
app: web-pod
service: web-service
spec:
containers:
- name: web
image: kahunacohen/hello-kube:latest
ports:
- containerPort: 3000
protocol: TCP
在我使用 kubectl 创建它们之后,所有对象都启动并运行并且看起来不错。
我这样做:
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7h5m
web-service NodePort 10.104.15.61 <none> 8080:32177/TCP 25m
$ curl $(minikube ip):8080 # or :32177, # or :3000
我没有收到任何回复。
我在执行此操作时发现,但是我可以通过转到 http://127.0.0.1:52650/
访问该应用程序:
$ minikube service web-service
|-----------|-------------|-------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------|-------------|---------------------------|
| default | web-service | http/8080 | http://192.168.49.2:32177 |
|-----------|-------------|-------------|---------------------------|
🏃 Starting tunnel for service web-service.
|-----------|-------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------|-------------|------------------------|
| default | web-service | | http://127.0.0.1:52472 |
|-----------|-------------|-------------|------------------------|
kubectl get services
时,这行是什么意思:web-service NodePort 10.104.15.61 <none> 8080:32177/TCP 25m
具体来说,端口映射是什么意思,32177
来自哪里?
最佳答案
让我回答你所有的问题。
0 - 无需单独创建 pod(除非需要测试),这应该通过创建部署(或有状态集,取决于应用程序和需求)来完成,这将创建一个 replicaset
它将负责将适量的 pods 保持在运行状态。 (你可以熟悉 deployments in kubernetes 。
1 - Tunnel用于从运行 minikube 的 VM 内部向主机网络公开服务。适用于 LoadBalancer
服务类型。请引用access applications in minikube .
1.1 - 无法在 localhost:NodePort
上访问应用程序的原因是 NodePort 暴露在运行 minikube
的 VM 中,而不是在您的本地机器上。
您可以通过运行 minikube IP
然后 curl %GIVEN_IP:NodePort
找到 minikube VM 的 IP。您应该会从您的应用中得到响应。
2 - targetPort
表示应该建立端口连接的服务。请引用define the service .
在 minikube
中,它可能会造成混淆,因为它指向 service port
,而不是服务中定义的 targetPort
。我认为想法是指示在集群中可访问哪个端口 service
。
3 - 关于这个问题,有标题,你可以按字面意思对待。例如:
$ kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
web-service NodePort 10.106.206.158 <none> 80:30001/TCP 21m app=web-pod
NodePort
来自 service
对象的 web-service.yaml
。 Type
是明确指定的,因此分配了 NodePort
。如果您没有指定 type
服务,它将被创建为 ClusterIP
类型,并且只能在 kubernetes 集群中访问。请引用Publishing Services (ServiceTypes) .
当使用 ClusterIP
类型创建服务时,输出中不会有 NodePort
。例如
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
web-service ClusterIP 10.106.206.158 <none> 80/TCP 23m
External-IP
将在使用 LoadBalancer
服务类型时弹出。此外,对于 minikube
,一旦您在不同的 shell 中运行 minikube tunnel
,地址就会出现。在您的主机上可以通过 External-IP
+ service port
访问您的服务。
4 - 这种映射没有问题。此外,这是 kubernetes 的默认行为:
Note: A Service can map any incoming port to a targetPort. By defaultand for convenience, the targetPort is set to the same value as theport field.
编辑:
取决于driver minikube
(通常这是一个 virtual box
或 docker
- 可以在 .minikube/profiles/minikube/中的 linux VM 上检查config.json
), minikube
可以有不同的端口转发。例如。我有一个基于 docker
驱动程序的 minikube
,我可以看到一些映射:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ebcbc898b557 gcr.io/k8s-minikube/kicbase:v0.0.23 "/usr/local/bin/entr…" 5 days ago Up 5 days 127.0.0.1:49157->22/tcp, 127.0.0.1:49156->2376/tcp, 127.0.0.1:49155->5000/tcp, 127.0.0.1:49154->8443/tcp, 127.0.0.1:49153->32443/tcp minikube
例如 22 用于 ssh 以 ssh 进入 minikube VM
。这可能是您从 http://127.0.0.1:52650/
关于kubernetes - 为什么我无法使用 minikube IP 访问我的 Kubernetes 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68336875/
给定的输入是192.168.3.78/27 输入可以是任意C类ip地址,以上ip为例进行尝试 预期输出应显示从 192.168.3.65 到 192.168.3.94 的所有 IP如下 192.168
您好,我是一名 javascript 菜鸟,正在为 IP 范围编写验证器。例如,1.1.1.1-2.2.2.2 是一个有效范围,但我想确保第一个 IP 不大于第二个 IP。 2.2.2.2-1.1.1
在 MySQL 数据库中存储多种 IP 类型的最佳方式是什么: - 单一 IP (123.123.123.123) - IP 范围 (123.123.123.1 - 123.123.123.121)
所以我有一个带有子网的 IP:8.8.8.0/24 我如何将其转换为 8.8.8.0 和 8.8.8.255(实际上是它们的 ip2long 结果) 在 PHP 和 JavaScript 中 最佳答案
我有 Windows7 作为我的基本操作系统。最重要的是,我在 Ubuntu 上安装了 Virtual Box。我希望 ubuntu 获得与我的基本操作系统(Win7)相同的 IP 地址。我如何实现这
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
阅读后List of IP Space used by Facebook : “真实”列表是最后一个答案,但我想知道 Igy(答案标记为解决方案)如何通过将连续的类添加到更大的类中来大幅缩小列表(通过
我正在开发一个 web 应用程序,我已经在我的本地主机中创建了这个项目,但是网络用户需要访问我的项目,我不想给他们一个不友好的 ip 地址,所以我想用户访问一个名称例子 http://myprojec
有人可以向我解释 Azure 在逻辑应用程序的出站 IP 地址之间不同的新方式之间的区别。 我认为文档在对该问题的正确解释方面非常精简。读起来听起来好像 IP 地址在逻辑应用程序中具有完全相同的作用。
我正在尝试熟悉一个项目中java中的数据报系统,目前,我们只使用UDP包。 为了发送消息,我们在 DatagramPacket 上设置目标 IP。 /* * The fields o
我有一个 Java 服务器,当我获得连接时,我需要检查 IP 是本地 IP 还是公共(public) IP。当它是我自己的本地 IP 时,我可以检测到它,但我在使用其他本地 IP 时遇到了一些问题。J
所以我在网上看到了很多例子,这些例子展示了如果你知道起始 IP 和结束 IP 如何获得完整的 IP,但我需要的是在提供后告诉我完整的 IP 范围带有起始 IP 和所需 IP 地址数的代码。 因此,例如
我创建了一个 python 项目,用于扫描 IP 范围(即 x.y.z.0/24)并返回在线主机列表。它将在线主机列表保存到仅包含 IP 的文件中(即 ['192.168.0.1'、'192.168.
如果用户的 ip 在某个 IP 范围之间,我正在使用重定向。但是,我正在使用多个 ip 范围,所以我想知道执行此操作的最佳方法。我目前正在使用它来重定向, 但是如果 IP 范围是 72.122.166
好的,现在是星期五下午,我度过了漫长的一周,希望能得到一些帮助!目前,我有一个 IP 范围列表,如下所示: List ipRanges = new List(); ipRanges.Add(new I
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
下面是我的 CloudFormation 模板的片段,用于将弹性 IP 地址与网络接口(interface)的主 IP 相关联: "MyInterfaceSelfEipAssociat
我在 Azure 上创建了 Python 函数,该函数调用外部 API 服务,该服务仅允许访问白名单 IP。 根据 Microsoft 文档 ( https://learn.microsoft.com
我在 Azure 上创建了 Python 函数,该函数调用外部 API 服务,该服务仅允许访问白名单 IP。 根据 Microsoft 文档 ( https://learn.microsoft.com
我在我的 CentOS 5 x86_64 中使用 IP 别名。为简化此示例:IP 地址 A 是 eth0 地址,IP 地址 B 是 eth0:0地址。我有 2 个 Apache 实例(版本 2.2.3
我是一名优秀的程序员,十分优秀!