问题描述
我正在尝试在k8s中部署zipkin。我正在使用elasticsearch(版本6.8.8)作为存储。部署工作正常,服务器启动。但是,我只能通过端口转发来访问服务器。
python-opencv
之后,我可以访问$ kubectl -n ns-zipkin port-forward zipkin-bdcf7f78b-shd9p 8888:9411
可能是什么原因?服务的部署已经没有我期望的端点(请参见下面的输出)。
deployment.yaml
http://localhost:8888/zipkin/
apiVersion: apps/v1
kind: Deployment
Metadata:
name: zipkin
labels:
app: zipkin
spec:
replicas: 1
selector:
matchLabels:
app: zipkin
template:
Metadata:
name: zipkin
labels:
app: zipkin
spec:
containers:
- name: zipkin
image: openzipkin/zipkin:2.21
imagePullPolicy: Always
ports:
- containerPort: 9411
protocol: TCP
env:
- name: STORAGE_TYPE
value: elasticsearch
- name: ES_HOSTS
value: https://my-es-host:9243
- name: ES_USERNAME
value: myUser
- name: ES_PASSWORD
value: myPassword
- name: ES_HTTP_LOGGING
value: HEADERS
readinessProbe:
httpGet:
path: /api/v2/services
port: 9411
initialDelaySeconds: 5
timeoutSeconds: 3
$ kubectl -n ns-zipkin describe deployment zipkin
service.yaml
Name: zipkin
Namespace: ns-zipkin
CreationTimestamp: Fri,04 Sep 2020 09:16:38 +0200
Labels: app=zipkin
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=zipkin
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable,25% max surge
Pod Template:
Labels: app=zipkin
Containers:
zipkin:
Image: openzipkin/zipkin:2.21
Port: 9411/TCP
Host Port: 0/TCP
Readiness: http-get http://:9411/api/v2/services delay=5s timeout=3s period=10s #success=1 #failure=3
Environment:
STORAGE_TYPE: elasticsearch
ES_HOSTS: https://my-es-host:9243
ES_USERNAME: myUser
ES_PASSWORD: myPassword
ES_HTTP_LOGGING: HEADERS
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewreplicasetAvailable
Oldreplicasets: <none>
Newreplicaset: zipkin-6788f4d555 (1/1 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
normal Scalingreplicaset 43m deployment-controller Scaled up replica set zipkin-6788f4d555 to 1
apiVersion: v1
kind: Service
Metadata:
name: zipkin
labels:
app.kubernetes.io/name: zipkin
app.kubernetes.io/instance: zipkin
app: zipkin
spec:
type: ClusterIP
ports:
- port: 9411
targetPort: 9411
protocol: TCP
name: http
selector:
app.kubernetes.io/name: zipkin
app.kubernetes.io/instance: zipkin
app: zipkin
$ kubectl -n ns-zipkin describe service zipkin
ingress.yaml
Name: zipkin
Namespace: ns-zipkin
Labels: app=zipkin
app.kubernetes.io/instance=zipkin
app.kubernetes.io/name=zipkin
Annotations: Selector: app.kubernetes.io/instance=zipkin,app.kubernetes.io/name=zipkin,app=zipkin
Type: ClusterIP
IP: CONCRETE-IP-ADDRESS
Port: http 9411/TCP
TargetPort: 9411/TCP
Endpoints: <none>
Session Affinity: None
Events: <none>
apiVersion: extensions/v1beta1
kind: Ingress
Metadata:
name: zipkin
labels:
app.kubernetes.io/name: zipkin
app.kubernetes.io/instance: zipkin
app.kubernetes.io/managed-by: zipkin
annotations:
kubernetes.io/ingress.class: Nginx
kubernetes.io/tls-acme: "true"
Nginx.ingress.kubernetes.io/rewrite-target: /$1
Nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
Nginx.ingress.kubernetes.io/proxy-body-size: "0"
Nginx.ingress.kubernetes.io/cors-allow-methods: "PUT,GET,POST,OPTIONS,DELETE"
Nginx.ingress.kubernetes.io/cors-allow-origin: "*"
Nginx.ingress.kubernetes.io/enable-cors: "true"
spec:
tls:
- hosts:
- ns-zipkin.my-host
secretName: .my-host
rules:
- host: ns-zipkin.my-host
http:
paths:
- path: /zipkin/?(.*)
backend:
serviceName: zipkin
servicePort: 80
$ kubectl -n ns-zipkin describe ingress
解决方法
您的服务需要在广告连播上显示以下标签:
selector:
app.kubernetes.io/name: zipkin
app.kubernetes.io/instance: zipkin
app: zipkin
尽管看起来您在zipkin吊舱上只有一个标签:
labels:
app: zipkin
标签选择器使用逻辑AND(&&),这意味着指定的所有标签都必须位于容器上才能与之匹配。
,以下工作。抱歉,我无法提供所有详细信息,因为我不知道它们:(也许其他人可以。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: zipkin
labels:
app.kubernetes.io/name: zipkin
app.kubernetes.io/instance: zipkin
app: zipkin
spec:
replicas: 1
selector:
matchLabels:
app: zipkin
template:
metadata:
name: zipkin
labels:
app: zipkin
spec:
containers:
- name: zipkin
image: openzipkin/zipkin:2.21
imagePullPolicy: Always
ports:
- containerPort: 9411
protocol: TCP
env:
- name: STORAGE_TYPE
value: elasticsearch
- name: ES_HOSTS
value: https://my-es-host:9243
- name: ES_USERNAME
value: myUser
- name: ES_PASSWORD
value: myPassword
- name: ES_HTTP_LOGGING
value: HEADERS
readinessProbe:
httpGet:
path: /api/v2/services
port: 9411
initialDelaySeconds: 5
timeoutSeconds: 3
service.yaml
apiVersion: v1
kind: Service
metadata:
name: zipkin
labels:
app.kubernetes.io/name: zipkin
app.kubernetes.io/instance: zipkin
app: zipkin
spec:
type: ClusterIP
ports:
- port: 9411
targetPort: 9411
protocol: TCP
name: http <-- DELETED
selector:
app.kubernetes.io/name: zipkin <-- DELETED
app.kubernetes.io/instance: zipkin <-- DELETED
app: zipkin
ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: zipkin
labels:
app.kubernetes.io/name: zipkin
app.kubernetes.io/instance: zipkin
app.kubernetes.io/managed-by: zipkin
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$1 <-- DELETED
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-body-size: "0"
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT,GET,POST,OPTIONS,DELETE"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/enable-cors: "true"
spec:
tls:
- hosts:
- ns-zipkin.my-host
secretName: .my-host
rules:
- host: ns-zipkin.my-host
http:
paths:
- path: / <-- CHANGED
backend:
serviceName: zipkin
servicePort: 9411 <-- CHANGED