问题标签 [spring-cloud-kubernetes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3448 浏览

spring - Spring Cloud Kubernetes - Spring Boot 不读取配置图

我有一个 Spring Boot Web 应用程序,它只打印一个在 Kubernetes 的 ConfigMap 中传递的属性。

这是我的主要课程:

MyConfig课程是:

基本上,通过调用根资源,我总是得到:

可以实时更改的消息

调用 /services 我实际上得到了 Kubernetes 服务的列表。

kubectl create -f configmap-demo.yml正在使用内容创建 ConfigMap:

部署kubecetl create -f deploy-demo.yml和内容是:

问题是当访问根资源时,/我总是得到默认的硬编码值,而不是 Kubernetes 的 ConfigMap 中定义的值。

示例项目还包含 yaml 文件和 Docker 文件,可在https://drive.google.com/open?id=107IcwnYIbVpmwVgdgi8Dhx4nHEFAVxV8获得。

还检查了启动调试日志,我没有看到任何错误或线索为什么它不应该工作。

0 投票
1 回答
6620 浏览

spring - Spring Cloud Kubernetes - 启用配置重新加载时 Spring Boot 无法启动

我有这个演示项目,它打印从配置中读取的标签。

这是我的主要课程:

MyConfig课程是:

bootstrap.properties包含:

以及中的依赖项build.gradle

kubectl create -f configmap-demo.yml正在使用内容创建 ConfigMap:

在 Kubernetes 中部署时,我在 Spring Boot 启动时收到以下错误:

如果我设置spring.cloud.kubernetes.reload.enabledfalse一切正常并且 configmap 被读取并投入使用。现在我的目标是在 configmap 更改但得到上面看到的异常时重新加载配置。我可以手动调用/actuator/refresh,所以我不认为刷新端点缺乏可用性。

我创建了一个演示项目,所有内容都包含在https://drive.google.com/open?id=1QbP8vePALLZ2hWQJArnyxrzSySuXHKiz中。

0 投票
2 回答
1875 浏览

kubernetes - Spring Cloud Kubernetes:什么是集群读取器权限?

根据Spring Cloud Kubernetes文档,为了在启用 RBAC 的 Kubernetes 发行版中发现服务/pod:

您需要确保使用 spring-cloud-kubernetes 运行的 pod 可以访问 Kubernetes API。对于您分配给部署/pod 的任何服务帐户,您需要确保它具有正确的角色。例如,您可以cluster-reader根据您所在的项目向默认服务帐户添加权限。

什么是cluster-reader发现服务/pod 的权限?

我收到的错误是:

0 投票
0 回答
557 浏览

java - Spring Cloud Config Client 是否支持使用 Kubernetes 作为发现客户端?

我在 Kubernetes 上运行 Spring Cloud Config Client。它使用spring-cloud-kubernetesspring-cloud-kubernetes-ribbon依赖项进行服务发现,我希望它能够通过设置发现 Spring Cloud Config Server spring.cloud.config.discovery.enabled=true,但它不起作用。

背景

我试图证明 Kubernetes 的 Service 能够以最低配置替换 Spring Cloud Eureka for Service Discovery。

我已经在 Kubernetes 中部署了一个 Spring Cloud 配置服务器(名为config-server,在 port )以及一个 Spring Boot 微服务作为同一命名空间中的单独服务,并在配置服务器和微服务中使用了 Spring Cloud Kubernetes。8888@EnableDiscoveryClientApplication.java

我在微服务中指定了以下属性,bootstrap.properties但微服务总是尝试从以下位置检索配置localhost:8888

只有当我将上述配置替换为以下配置时,才能成功检索服务器中的配置:

0 投票
2 回答
1765 浏览

spring - Spring Cloud Kubernetes FeignClient 错误

我正在使用带有 spring boot 的 spring cloud kubernetes 和项目所需的必要 RBAC 要求。

我在 kubernetes 中运行了 2 个微服务

  1. my-service
  2. some-service

使用Spring my-serviceBoot 2.xsome-service运行并使用 Spring Boot 1.x 运行。这两项服务都通过 KubernetesService和适当的端点公开。

application.yamlfor的摘录my-service如下。

使用的 FeignClient 如下。

我也做了spring.cloud.kubernetes.discovery.enabled=false

有了这个,我希望它my-service应该能够some-service通过 kubernetes 服务发现进行对话,但是我收到了这个错误。

我无法理解我做错了什么。some-service此外,由于它是第三方服务,因此我没有设置 spring.application.name 。

有人可以帮忙吗。另外仅供参考,服务可以通过端口转发正常工作,如果通过 Ingress 访问。

0 投票
1 回答
206 浏览

kubernetes - KubernetesClientException: ClusterRole 或 Role

在使用 Spring Cloud Kubernetes Discovery Client 部署服务时,我收到 KubernetesClientException 指出用户“默认”被禁止访问 pod。

我已经添加了此处指定的角色和角色绑定

该指南指出 ClusterRole 是必要的。但这不是我的选择,因为我们与其他部门共享集群。我只希望角色影响我们的项目/命名空间。

ClusterRole 是必需的还是 Role 是否足够?

0 投票
1 回答
396 浏览

kubernetes - Spring Cloud Data Flow + Kubernetes,要求将任务 pod 部署在非默认命名空间上

我有一个工作正常的设置scdf-serverkubernetes它将每个任务部署在同一个默认命名空间的按需 Pod 中,即托管scdf-serverPod 的命名空间。

现在,我需要在另一个命名空间中部署一个 pod,但我找不到scdf server dashboard要在给定命名空间中创建的 pod 中使用的参数/属性。有人知道怎么找到吗?我试过spring.cloud.deployer.kubernetes.namespace, deployer.kubernetes.namespace, spring.cloud.deployer.kubernetes.environmentVariables, deployer.<app>.kubernetes.namespace, spring.cloud.dataflow.task.platform.kubernetes.namespace, scheduler.kubernetes.environmentVariables SPRING_CLOUD_SCHEDULER_KUBERNETES_NAMESPACE......作为“属性”和“参数”文本框......

0 投票
2 回答
806 浏览

java - Spring Boot Admin 重启后未检测到服务

我有一个提供不同服务的环境。它们都由 Docker 镜像和 Kubernetes 部署和管理。我还使用spring-boot-admin它来监控它们并spring-cloud-kubernetes自动发现所有服务。这是我的属性文件。

application.yml(在 SBA 项目中)

每当我重新启动 SBA 项目时,它都能完美运行,它会发现每个服务。当我重新启动单个项目时,我的问题出现了,它在 SBA 中显示为 OFFLINE 并且它不会改变其状态。

我错过了什么?

0 投票
3 回答
5351 浏览

spring-boot - 如何设置 Spring Cloud Gateway 应用程序以便它可以使用 Spring Cloud Kubernetes 的服务发现?

我创建了两个 Spring Boot 应用程序,它们都将部署在 Kubernetes 集群中。其中一个应用程序将充当网关,因此使用 Spring Cloud Gateway 作为依赖项。另外我想将服务发现与 Spring Cloud Kubernetes 集成,网关使用服务发现自动生成相应的路由。但是,当我公开在本地 Minikube 集群中运行的网关应用程序并调用第二个应用程序/服务时,我收到 503 错误并显示以下消息:Unable to find instance for ...-service

目前我已经安装了以下内容:

  • Minikube
  • 虚拟盒子
  • 码头工人工具箱

我创建了一个带有两个子项目(网关和另一个服务)的 Gradle 项目。所有项目都将在本地构建/部署。默认服务帐户有权读取 Kubernetes API。部署这些服务后,我将网关服务公开在外部。在网关服务中,我实现了一些端点,其中

  1. 通过 DiscoveryClient 提供集群中所有服务的列表。
  2. 在应用层根据 DiscoveryClient 提供的 URI 调用其他服务。

一切似乎都正常,但是当我调用其他服务时,URI/serviceId我得到了 503 错误......

使用以下 Spring Cloud 版本: spring-cloud-starter-kubernetes 1.0.1.RELEASE spring-cloud-starter-gateway 2.1.1.RELEASE

我的演示应用程序可在https://github.com/nmaoez/spring-cloud-gateway-kubernetes获得,README.md 提供了将这两种服务部署在本地 Minikube 集群中的步骤。还显示了所有可用的端点。但有趣的部分是应用程序.yaml 和网关的应用程序类。

应用程序.yaml:

GatewayApplication.java

在将 gateway-service/application.yaml 中的 url-expression 字段覆盖为之后,我知道它是如何运行的

之后,我在调用后得到了正确的响应gateway-uri/another-service/。但我的愿望是不明确替换lb://serviceid. 我怎样才能做到这一点?

我希望如果我通过网关调用集群中的另一个服务,我会得到 200 响应和基于应用程序其余控制器的正确答案。

0 投票
1 回答
96 浏览

kubernetes - 部署 spring-cloud-kubernetes kubernetes-hello-world-example 失败

我正在尝试运行示例https://github.com/spring-cloud/spring-cloud-kubernetes/tree/master/spring-cloud-kubernetes-examples/kubernetes-hello-world的 1.0.1.RELEASE 版本-example但它在 minikube 和 gcloud 中都失败并出现此错误:无法从注册表中提取图像“cloud/kubernetes-hello-world:1.0.1.RELEASE”。

我首先在 Kubernetes in Action 中完成了示例 kubia,它同时在 minikube 和 gcloud 中运行。

示例自述文件中有一个关于执行器健康路径问题的警告,我想出了如何通过在 kubectl 中编辑来修复它,但这并没有帮助。

这表明在 docker 中找不到该图像。我已经运行了“gcloud auth configure-docker”来将本地 docker 配置为 gcloud。构建 'mvn fabric8:deploy -Pkubernetes' 似乎工作,有非致命的 javadoc 错误:

该图像似乎存在于docker中

kubectl get pods -w 返回