当前位置: 首页 > 知识库问答 >
问题:

从kubernetes吊舱开放端口获取连接被拒绝

司寇光华
2023-03-14

我是kubernetes的新手,我正在尝试部署一个带有Gitlab管道的MEAN stack应用程序到谷歌云中的kubernetes引擎。然而,我不能让它让我连接到一个在开放端口(4200)上运行我的代码的吊舱。您可以在下面找到我的YAML配置。Dockerfile

FROM node:13.13-alpine
RUN mkdir -p /usr/src/app
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN cd /usr/src/app && npm install @angular/core@9.1.4 @angular/animations@9.1.4 @angular/common@9.1.4 @angular/forms@9.1.4 @angular/platform-browser@9.1.4 @angular/router@9.1.4 @angular/platform-browser-dynamic@9.1.4 @angular/compiler@9.1.4 @angular/compiler-cli@9.1.4 @angular/language-service@9.1.4 && npm install && npm run-script build
EXPOSE 3000 4200
CMD ["npm","run-script","start"]
deploy service:
    stage: deploy_kubernetes
    image: google/cloud-sdk:latest
    script:
        # Auth and GC Cluster configs
        - echo $GKE_SERVICE_KEY | base64 -d > service-account.json
        - gcloud auth activate-service-account --key-file service-account.json
        - gcloud container clusters get-credentials $GKE_cluster_name --zone $GKE_zone --project $GKE_project_id
        # Kompose to build deployment files
        - curl -L https://github.com/kubernetes/kompose/releases/download/v1.19.0/kompose-linux-amd64 -o kompose
        - chmod +x kompose
        - mv ./kompose /usr/local/bin/kompose
        - kompose convert -f deploy/docker-compose-stack.yml
        # Kompose patches and service creating in Kubernetes
        - kubectl apply -f mean-deployment.yaml,mean-service.yaml
        - echo $PATCH_LOAD_BALANCER | base64 -d > patch_load_balancer.json
        - kubectl patch svc mean --patch "$(cat patch_load_balancer.json)"

docker-compose-stack.yml

version: "3.7"
services: 
    mean: 
        image: theycallmefox/gp_ips:latest
        ports: 
            - 3000:3000
            - 4200:4200

运行kubectl get svc--all-namespaces会得到以下输出:

NAMESPACE     NAME                   TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)                                                    AGE
default       kubernetes             ClusterIP      10.0.0.1      <none>         443/TCP                                                    3d
default       mean                   LoadBalancer   10.0.12.199   34.91.94.183   443:31324/TCP,80:32732/TCP,3000:32577/TCP,4200:32512/TCP   2d2h
kube-system   default-http-backend   NodePort       10.0.4.122    <none>         80:32038/TCP                                               2d23h
kube-system   kube-dns               ClusterIP      10.0.0.10     <none>         53/UDP,53/TCP                                              2d23h
kube-system   metrics-server         ClusterIP      10.0.1.220    <none>         443/TCP                                                    2d23h

最后,运行kubectl logs-f mean-6cb9949f77-kbz95

> portal-ips@0.0.0 start /usr/src/app
> ng serve && cd ../backend && node app.js
chunk {main} main.js, main.js.map (main) 412 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 141 kB [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 6.15 kB [entry] [rendered]
chunk {scripts} scripts.js, scripts.js.map (scripts) 219 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 1.12 MB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 5.6 MB [initial] [rendered]
Date: 2020-05-24T17:50:28.305Z - Hash: a02a05a0d81f690bca61 - Time: 35281ms
** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
: Compiled successfully.

有什么想法吗?谢了。

共有1个答案

苏德容
2023-03-14

负载均衡器将流量转发到以太网接口时,应用程序正在本地主机上侦听。

您需要更改应用程序,使其在0.0.0.0上服务。

 类似资料:
  • kubectl对kafka的描述也显示了暴露的节点 我有一个出版商二进制文件,将一些信息发送到Kafka。由于我有一个3节点集群部署,我使用我的主节点IP和Kafka节点端口(30092)与Kafka连接。 但是我的二进制文件正在获得错误。我无法理解为什么即使在nodePort到targetPort转换成功后,它还是被拒绝。随着进一步的调试,我在kafka日志中看到了以下调试日志:

  • 我对Kubernetes是新来的。 我发现了2个pod优先级选项-优先级类别和服务质量。它们之间有什么不同? (https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/https://kubernetes.io/docs/tasks/configure-pod-container/quality-servi

  • 我的要求是在自定义指标上扩展POD,如队列中的挂起消息,PODS必须增加以处理作业。在kubernetes,Scale up在普罗米修斯适配器和普罗米修斯操作员中工作得很好。 我在pods中有长时间运行的进程,但HPA检查自定义度量并试图缩小规模,因为这个进程杀死了操作的中间并丢失了消息。我如何控制HPA只杀死没有进程运行的自由豆荚。 序列查询:‘{namespace=“default”,serv

  • 问题内容: 我正在使用Android Studio v1.0.1在macOS Yosemite 10.10中构建应用程序。当我尝试调试应用程序时,它可以正确安装但出现错误 运行[app]时出错:无法打开调试器端口:java.net.ConnectException“拒绝连接” 当我运行DDMS时,它会显示连接的设备和过程。仅在尝试在Android Studio中进行调试时才会出现问题。 在其他论坛

  • 我连接到MySQL(5.1.6)数据库从Linux默认的3306端口和一切都很好: 现在,我进入/etc/mysql/my。cnf并将默认端口更改为3307(包括[client]和[mysqld])重新启动MySQL,调整hibernate连接url: 然后重启jboss。这一次我再也无法连接: 知道mysql拒绝连接的原因吗?没有更改其他配置。。但MySQL是默认端口。也没有防火墙启动和运行。

  • 我们正在使用Docker 1.19运行库伯内特斯(1.18) Container是一个基于Java13的Spring启动应用程序(使用基本图像作为openjdk: 13-alpin),下面是内存设置。 豆荚: 内存-最小448M,最大2500M cpu-最小值0.1 容器: Xms:256M,Xmx:512M 当流量发送更长时间时,容器会突然重新启动;在Prometheus中,我可以看到Pod内存