我有 2 个应用程序。一个是配置服务器,另一个是使用配置服务器数据的 business-logic-app。它们都在 Kubernetes 中的同一命名空间上运行(我的笔记本电脑上的 kubectl)。但是,当 business-logic-app 连接到配置服务器时,我收到连接超时异常,这导致 livenessProbe 和 readinessProbe 失败。我遗漏了什么?
配置服务器.yaml
# Config server
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubernetes-learning-config-server
namespace: kubernetes-learning
labels:
app: kubernetes-learning-config-server
spec:
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector:
matchLabels:
app: kubernetes-learning-config-server
template:
metadata:
name: kubernetes-learning-config-server
labels:
app: kubernetes-learning-config-server
spec:
containers:
- name: kubernetes-learning-config-server
image: ghcr.io/kubernetes/learning.config-server
imagePullPolicy: Always
ports:
- containerPort: 8888
protocol: TCP
- containerPort: 48888
protocol: TCP
env:
- name: BPL_JVM_THREAD_COUNT
value: "50"
- name: BPL_DEBUG_ENABLED
value: "true"
- name: BPL_DEBUG_PORT
value: "48888"
- name: GITHUB_CONFIG_DATA_URL
value: https://github.com/kubernetes/config-data
- name: GITHUB_CONFIG_DATA_USERNAME
value: github_user
- name: GITHUB_CONFIG_DATA_PERSONAL_ACCESS_TOKEN
value: github_sampletoken
livenessProbe:
httpGet:
path: /alpha-app/local
port: 8888
initialDelaySeconds: 30
periodSeconds: 20
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
httpGet:
path: /alpha-app/local
port: 8888
initialDelaySeconds: 30
periodSeconds: 20
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 3
restartPolicy: Always
# Expose Config server
---
apiVersion: v1
kind: Service
metadata:
name: kubernetes-learning-config-server
labels:
app: kubernetes-learning-config-server
spec:
type: ClusterIP
selector:
app: kubernetes-learning-config-server
ports:
- protocol: TCP
port: 80
targetPort: 8888
alpha-应用程序.yaml
# app applications
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubernetes-learning-app
namespace: kubernetes-learning
labels:
app: kubernetes-learning-app
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector:
matchLabels:
app: kubernetes-learning-app
template:
metadata:
name: kubernetes-learning-app
labels:
app: kubernetes-learning-app
spec:
containers:
- name: kubernetes-learning-alpha-app
image: ghcr.io/kubernetes/learning.alpha-app
imagePullPolicy: Always
ports:
- containerPort: 8441
protocol: TCP
- containerPort: 48441
protocol: TCP
env:
- name: BPL_JVM_THREAD_COUNT
value: "50"
- name: BPL_DEBUG_ENABLED
value: "true"
- name: BPL_DEBUG_PORT
value: "48441"
- name: SPRING_PROFILES_ACTIVE
value: kube
- name: SPRING_CLOUD_CONFIG_FAIL_FAST
value: "true"
- name: SPRING_CLOUD_CONFIG_RETRY_INITIAL_INTERVAL
value: "1000"
- name: SPRING_CLOUD_CONFIG_RETRY_MAX_INTERVAL
value: "10000"
- name: SPRING_CLOUD_CONFIG_RETRY_MULTIPLIER
value: "2"
- name: SPRING_CLOUD_CONFIG_RETRY_MAX_ATTEMPTS
value: "5"
- name: SPRING_CLOUD_CONFIG_URI
value: http://kubernetes-learning-config-server:8888
livenessProbe:
httpGet:
path: /info
port: 8441
initialDelaySeconds: 60
timeoutSeconds: 15
periodSeconds: 30
successThreshold: 1
failureThreshold: 3
readinessProbe:
httpGet:
path: /info
port: 8441
initialDelaySeconds: 60
timeoutSeconds: 15
periodSeconds: 30
successThreshold: 1
failureThreshold: 3
restartPolicy: Always
# Expose Config server
---
apiVersion: v1
kind: Service
metadata:
name: kubernetes-learning-app
labels:
app: kubernetes-learning-app
spec:
type: ClusterIP
selector:
app: kubernetes-learning-app
ports:
- protocol: TCP
port: 80
targetPort: 8441
例外
Caused by: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://kubernetes-learning-config-server:8888/alpha-app/kube": Connect timed out
at org.springframework.web.client.RestTemplate.createResourceAccessException(RestTemplate.java:926) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:906) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:801) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:683) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.getRemoteEnvironment(ConfigServerConfigDataLoader.java:349) ~[spring-cloud-config-client-4.2.0.jar:4.2.0]
at org.springframework.cloud.config.client.ConfigServerConfigDataLoader.doLoad(ConfigServerConfigDataLoader.java:130) ~[spring-cloud-config-client-4.2.0.jar:4.2.0]
... 37 common frames omitted
Caused by: java.net.SocketTimeoutException: Connect timed out
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(Unknown Source) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source) ~[na:na]
at java.base/java.net.Socket.connect(Unknown Source) ~[na:na]
at java.base/sun.net.NetworkClient.doConnect(Unknown Source) ~[na:na]
at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) ~[na:na]
at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) ~[na:na]
at java.base/sun.net.www.http.HttpClient.<init>(Unknown Source) ~[na:na]
at java.base/sun.net.www.http.HttpClient.New(Unknown Source) ~[na:na]
at java.base/sun.net.www.http.HttpClient.New(Unknown Source) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) ~[na:na]
at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) ~[na:na]
at org.springframework.http.client.SimpleClientHttpRequest.executeInternal(SimpleClientHttpRequest.java:79) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.http.client.AbstractStreamingClientHttpRequest.executeInternal(AbstractStreamingClientHttpRequest.java:71) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:81) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:900) ~[spring-web-6.2.1.jar:6.2.1]
... 41 common frames omitted