无法使用kubernetes服务公开端口

时间:2018-10-23 13:11:06

标签: kubernetes dockerfile

我的目标:公开广告连播的(运行角度图像)port,以便可以从主机的浏览器访问它

service.yml:

apiVersion: v1
kind: Service
metadata:  
  name: my-frontend-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 8000
    targetPort: 4200

Pod的yml:

apiVersion: v1
kind: Pod
metadata:
  name: angular.frontend
  labels:
    app: MyApp
spec:
  containers:
  - name: angular-frontend-demo
    image: angular-frontend-image
    ports:
    - name: nodejs-port
      containerPort: 4200

奇怪的是,进行kubectl port-forward pod/angular.frontend 8000:4200可行。但是,我的目的是将其写在service.yml

2 个答案:

答案 0 :(得分:2)

使用Nodeport:

apiVersion: v1
kind: Service
metadata:  
  name: my-frontend-service
spec:
  selector:
    app: MyApp
  type: NodePort
  ports:
  - protocol: TCP
    port: 8000
    targetPort: 4200
    nodePort: 30001

然后,您可以在群集的任何节点上的nodeport 30001上访问服务。

例如,计算机名称为node01,则可以卷曲http://node01:30001

答案 1 :(得分:1)

您在此处定义的服务的类型为ClusterIP(因为您尚未在type中设置spec)。这意味着该服务仅可用,reachable within the cluster。您可以使用Ingress使它可以从集群外部访问,例如参见this post,其中显示了如何对Minikube执行此操作。