问题标签 [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.
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获得。
还检查了启动调试日志,我没有看到任何错误或线索为什么它不应该工作。
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.enabled
为false
一切正常并且 configmap 被读取并投入使用。现在我的目标是在 configmap 更改但得到上面看到的异常时重新加载配置。我可以手动调用/actuator/refresh
,所以我不认为刷新端点缺乏可用性。
我创建了一个演示项目,所有内容都包含在https://drive.google.com/open?id=1QbP8vePALLZ2hWQJArnyxrzSySuXHKiz中。
kubernetes - Spring Cloud Kubernetes:什么是集群读取器权限?
根据Spring Cloud Kubernetes文档,为了在启用 RBAC 的 Kubernetes 发行版中发现服务/pod:
您需要确保使用 spring-cloud-kubernetes 运行的 pod 可以访问 Kubernetes API。对于您分配给部署/pod 的任何服务帐户,您需要确保它具有正确的角色。例如,您可以
cluster-reader
根据您所在的项目向默认服务帐户添加权限。
什么是cluster-reader
发现服务/pod 的权限?
我收到的错误是:
java - Spring Cloud Config Client 是否支持使用 Kubernetes 作为发现客户端?
我在 Kubernetes 上运行 Spring Cloud Config Client。它使用spring-cloud-kubernetes
和spring-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
@EnableDiscoveryClient
Application.java
我在微服务中指定了以下属性,bootstrap.properties
但微服务总是尝试从以下位置检索配置localhost:8888
:
只有当我将上述配置替换为以下配置时,才能成功检索服务器中的配置:
spring - Spring Cloud Kubernetes FeignClient 错误
我正在使用带有 spring boot 的 spring cloud kubernetes 和项目所需的必要 RBAC 要求。
我在 kubernetes 中运行了 2 个微服务
my-service
some-service
使用Spring my-service
Boot 2.xsome-service
运行并使用 Spring Boot 1.x 运行。这两项服务都通过 KubernetesService
和适当的端点公开。
application.yaml
for的摘录my-service
如下。
使用的 FeignClient 如下。
我也做了spring.cloud.kubernetes.discovery.enabled=false
有了这个,我希望它my-service
应该能够some-service
通过 kubernetes 服务发现进行对话,但是我收到了这个错误。
我无法理解我做错了什么。some-service
此外,由于它是第三方服务,因此我没有设置 spring.application.name 。
有人可以帮忙吗。另外仅供参考,服务可以通过端口转发正常工作,如果通过 Ingress 访问。
kubernetes - KubernetesClientException: ClusterRole 或 Role
在使用 Spring Cloud Kubernetes Discovery Client 部署服务时,我收到 KubernetesClientException 指出用户“默认”被禁止访问 pod。
我已经添加了此处指定的角色和角色绑定
该指南指出 ClusterRole 是必要的。但这不是我的选择,因为我们与其他部门共享集群。我只希望角色影响我们的项目/命名空间。
ClusterRole 是必需的还是 Role 是否足够?
kubernetes - Spring Cloud Data Flow + Kubernetes,要求将任务 pod 部署在非默认命名空间上
我有一个工作正常的设置scdf-server
,kubernetes
它将每个任务部署在同一个默认命名空间的按需 Pod 中,即托管scdf-server
Pod 的命名空间。
现在,我需要在另一个命名空间中部署一个 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
......作为“属性”和“参数”文本框......
java - Spring Boot Admin 重启后未检测到服务
我有一个提供不同服务的环境。它们都由 Docker 镜像和 Kubernetes 部署和管理。我还使用spring-boot-admin
它来监控它们并spring-cloud-kubernetes
自动发现所有服务。这是我的属性文件。
application.yml(在 SBA 项目中)
每当我重新启动 SBA 项目时,它都能完美运行,它会发现每个服务。当我重新启动单个项目时,我的问题出现了,它在 SBA 中显示为 OFFLINE 并且它不会改变其状态。
我错过了什么?
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。部署这些服务后,我将网关服务公开在外部。在网关服务中,我实现了一些端点,其中
- 通过 DiscoveryClient 提供集群中所有服务的列表。
- 在应用层根据 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 响应和基于应用程序其余控制器的正确答案。
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 返回