【发布时间】:2019-07-09 13:31:43
【问题描述】:
我正在从here学习k8s中的服务
我创建了没有选择器和一个端点的服务。我想要做的是我已经安装了 apache,它在端口 80 上运行。我在端口 31000 上创建了一个节点端口服务。现在这个服务应该将 ip:31000 重定向到 ip:80 端口。
它适用于服务的内部 ip,但不适用于外部 ip。
my-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- protocol: TCP
port: 9376
targetPort: 80
nodePort: 31000
type: NodePort
my-endpoint.yaml
apiVersion: v1
kind: Endpoints
metadata:
name: my-service
subsets:
- addresses:
- ip: <IP>
ports:
- port: 80
kubectl get service -o wide 的输出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 53m <none>
my-service NodePort 10.111.205.207 <none> 9376:31000/TCP 30m <none>
【问题讨论】:
-
你是如何运行 apache 的?您是在 pod 内运行 apache 还是直接安装在节点中?另外你在哪里运行这个? Minikube 还是云管理的 kubernetes 集群?
-
外部IP是什么意思?那是一个可以公开访问的IP吗? NodePort 类型的服务使用
${NodeIP}:${NodePort}使您的服务在集群节点上可用。如果这些节点没有公共 IP,您将无法从网络外部访问您的服务。 -
我只在节点上运行 Apache。我在云上运行它。 Cloud 有两个工作节点和一个主节点
标签: docker kubernetes devops kubernetes-service