首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库伯奈特舱港暴露/前进

库伯奈特舱港暴露/前进
EN

Stack Overflow用户
提问于 2021-12-17 07:17:31
回答 4查看 1.1K关注 0票数 3

我试图在一个吊舱上公开一个端口8080,这样我就可以直接从服务器获得数据。通过端口转发一切正常工作(kubectl --namespace jenkins port-forward pods/jenkins-6f8b486759-6vwkj 9000:8080),我能够连接到127.0.0.1:9000

但是,当我试图永久地避免端口转发和打开端口(kubectl expose deployment jenkins --type=LoadBalancer -njenkins)时:我在svc (kubectl describe svc jenkins -njenkins)中看到了它:

代码语言:javascript
复制
Name:                     jenkins
Namespace:                jenkins
Labels:                   <none>
Annotations:              <none>
Selector:                 app=jenkins
Type:                     LoadBalancer
IP Families:              <none>
IP:                       10.111.244.192
IPs:                      10.111.244.192
Port:                     port-1  8080/TCP
TargetPort:               8080/TCP
NodePort:                 port-1  31461/TCP
Endpoints:                172.17.0.2:8080
Port:                     port-2  50000/TCP
TargetPort:               50000/TCP
NodePort:                 port-2  30578/TCP
Endpoints:                172.17.0.2:50000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

但是端口仍然没有打开,netstat没有显示任何内容。该如何正确处理呢?

使用minikube版本: v1.20.0,pod yaml,以防万一:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      securityContext:

      containers:
      - name: jenkins
        image: jenkins/jenkins:lts

        ports:
          - name: http-port
            containerPort: 8080
            hostPort: 8080
          - name: jnlp-port
            containerPort: 50000
        volumeMounts:
          - name: task-pv-storage
            mountPath: /var/jenkins_home
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: task-pv-claim
EN

回答 4

Stack Overflow用户

发布于 2021-12-17 12:04:13

我看到您正在本地运行k8s集群,在本例中,不建议使用LoadBalancer ServiceType,因为这种类型使用云提供商的负载均衡器对外公开服务。您可能会使用自托管或硬件负载均衡器,但我认为,对于小型库集群来说,这有点过分了。

在迷你部署中,我建议使用NodePort服务类型,因为它使用节点的IP地址来公开服务。例YAML:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
spec:
  type: NodePort
  selector:
    app: jenkins
  ports:
    - port: 8080
      targetPort: 8080
      # nodePort field is optional, Kubernetes will allocate port from a range 30000-32767, but you can choose 
      nodePort: 30007
    - port: 50000
      targetPort: 50000     
      nodePort: 30008

然后,你可以在<NodeIP>:<nodePort>上访问你的应用程序。如果您想了解更多关于k8s服务的内容,请转到这里

票数 1
EN

Stack Overflow用户

发布于 2021-12-17 17:19:36

问题在于一个迷你浏览器本身--在检查kubectl get events --all-namespaces时发现了它,一些奇怪的事情正在发生,看起来内部代理组件被损坏了。

票数 1
EN

Stack Overflow用户

发布于 2021-12-17 10:40:52

检查您的Pods是否有带有kubectl get pods -o=wide的外部IP

负载平衡不应该在您的单个节点机器上实现(使用Minikube),存在某种“黑客”。

如果要在云提供程序上部署集群,负载均衡器将被完全管理

要了解我谈论的"hack“,请参阅本教程中的视频部分,内容是”侵入主题“组件解释:https://youtu.be/X48VuDVv0do?t=7312

您应该将带有nginx服务器的Pod放在入口、负载均衡器和部署Pods前面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70389601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档