访问其中一个容器的bash外壳
[我为在kubernetes集群中运行的清漆缓存服务器创建了舵图,同时使用“外部IP”进行测试时产生了抛出错误,请在下面共享
HTTP/1.1 503 Backend fetch failed Date: Tue, 17 Mar 2020 08:20:52 GMT Server: Varnish Content-Type: text/html; charset=utf-8 Retry-After: 5 X-Varnish: 570521 Age: 0 Via: 1.1 varnish (Varnish/6.3) X-Cache: uncached Content-Length: 283 Connection: keep-alive
在下面共享varnish.vcl,values.yaml和deployment.yaml。我将后端服务器硬编码为端口为“ 80”的.host =“ www.varnish-cache.org”时,有关如何解决的任何建议。我的要求是在执行curl -IL时,我应该获得不具有上述缓存值的响应(直接从后端服务器)。]
varnish.vcl:
# VCL version 5.0 is not supported so it should be 4.0 or 4.1 even though actually used Varnish version is 6 vcl 4.1; import std; # The minimal Varnish version is 5.0 # For SSL offloading, pass the following header in your proxy server or load balancer: 'X-Forwarded-Proto: https' {{ .Values.varnishconfigData | indent 2 }} sub vcl_recv { if(req.url == "/healthcheck") { return(synth(200,"OK")); } } sub vcl_deliver { if (obj.hits > 0) { set resp.http.X-Cache = "cached"; } else { set resp.http.X-Cache = "uncached"; } }
values.yaml:
# Default values for tt. # This is a YAML-formatted file. # Declare variables to be passed into your templates. replicaCount: 1 #varnishBackendService: "www.varnish-cache.org" #varnishBackendServicePort: "80" image: repository: varnish tag: 6.3 pullPolicy: IfNotPresent nameOverride: "" fullnameOverride: "" service: # type: ClusterIP type: LoadBalancer port: 80 # externalIPs: 192.168.0.10 varnishconfigData: |- backend default { .host = "www.varnish-cache.org"; .host = "100.68.38.132" .port = "80"; .first_byte_timeout = 60s; .connect_timeout = 300s ; .probe = { .url = "/"; .timeout = 1s; .interval = 5s; .window = 5; .threshold = 3; } } sub vcl_backend_response { set beresp.ttl = 5m; } ingress: enabled: false annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" path: / hosts: - chart-example.local tls: [] # - secretName: chart-example-tls # hosts: # - chart-example.local resources: limits: memory: 128Mi requests: memory: 64Mi #resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little # resources, such as Minikube. If you do want to specify resources, uncomment the following # lines, adjust them as necessary, and remove the curly braces after 'resources:'. # limits: # cpu: 100m # memory: 128Mi # requests: # cpu: 100m # memory: 128Mi nodeSelector: {} tolerations: [] affinity: {}
Deployment.yaml:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ include "varnish.fullname" . }}
labels:
app: {{ include "varnish.name" . }}
chart: {{ include "varnish.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ include "varnish.name" . }}
release: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ include "varnish.name" . }}
release: {{ .Release.Name }}
spec:
volumes:
- name: varnish-config
configMap:
name: {{ include "varnish.fullname" . }}-varnish-config
items:
- key: default.vcl
path: default.vcl
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
# command: ["/bin/sh"]
# args: ["-c", "while true; do service varnishd status, varnishlog; sleep 10;done"]
env:
- name: VARNISH_VCL
value: /etc/varnish/default.vcl
volumeMounts:
- name: varnish-config
mountPath : /etc/varnish/
ports:
- name: http
containerPort: 80
protocol: TCP
targetPort: 80
livenessProbe:
httpGet:
path: /healthcheck
port: http
port: 80
failureThreshold: 3
initialDelaySeconds: 45
timeoutSeconds: 10
periodSeconds: 20
readinessProbe:
httpGet:
path: /healthcheck
port: http
port: 80
initialDelaySeconds: 10
timeoutSeconds: 15
periodSeconds: 5
restartPolicy: "Always"
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
[我为在kubernetes集群中运行的清漆缓存服务器创建了舵图,同时使用“外部IP”进行测试时产生了抛出错误,并在HTTP / 1.1 503 Backend ...下共享]] >> [[
HTTP/1.1 503 Backend fetch failed
错误表明Varnish无法连接到后端主机和端口。访问其中一个容器的bash外壳
/etc/varnish/default.vcl
并检查解析为backend
定义的确切主机名和端口curl
,并尝试在该特定端口上卷曲主机名telnet
并尝试查看主机名的端口是否正在接受连接