我已经在我的AKS集群中部署了istio服务网格。我在istio中都配置了ui和后端服务以进行服务通信。我能够通过istio调用后端服务,访问我的后端服务也没有问题。
但是当我看到Pod状态时,我在test-ui Pod中遇到了问题
NAME READY STATUS RESTARTS AGE
Test-api-deployment-59f6c6f67-ml4xm 2/2 Running 0 3d21h
Test-ui-deployment-b54fd89b-2ndsv 1/2 Running 0 52m
在上述状态下,我的ui pod容器(我的istio容器之一)未处于准备就绪状态,无法满足我的请求。.当我进入容器状态时,出现以下错误。
Warning Unhealthy 2m24s (x299 over 12m) kubelet, aks-wmsdevk8s-25812762-4
Readiness probe failed: HTTP probe failed with statuscode: 503
我看到它是一个未解决的问题issue in github ..是否有任何解决方法...
编辑
我的istio版本
version.BuildInfo {版本:“ 1.1.5”, GitRevision:“ 9b6d31b74d1c0cc9358cc82d395b53f71393326b”,用户:“ root”, 主机:“ 3e29fde4-6c3f-11e9-b00d-0a580a2c0205”,Golang版本:“ go1.10.4”, DockerHub:“ docker.io/istio”,BuildStatus:“ Clean”, GitTag:“ 1.1.4-10-g9b6d31b”}
istio proxy version - Image: docker.io/istio/proxyv2:1.1.2
答案 0 :(得分:1)
它应与istio 1.1.5一起使用。我想您没有配置istio来重写HTTPProbes。您需要使用sidecarInjectorWebhook.rewriteAppHTTPProbe=true
(source)安装Istio。
您可以检查自己的istio-sidecar-injector
配置图,它应该有rewriteAppHTTPProbe: true
ps。我相信istio 1.1.2可以为我工作
答案 1 :(得分:0)
就我而言,我在带有ServiceMesh TP 0.10的OpenShift 3.11上进行了测试,并使用了ovs-multitenant(SDN插件),因此阻止了项目间的通信。我遇到了同样的问题,并将istio-system名称空间的netid设置为“ 0”,然后问题解决了。 检查应用程序的名称空间和具有istio-sidecar-injector的名称空间之间的网络通信。
答案 2 :(得分:0)
您可以注入sidecar代理并使用istioctl重写应用程序探测终结点
kb get <deployment/statefulset> -n <namespace> <resource_name> -o yaml | istioctl kube-inject --rewriteAppProbe -f - | kubectl apply -f -
答案 3 :(得分:0)
您需要为Pod启用活动度探针:
如果已经安装了Istio
,则可以在命名空间istio-system
中更改配置映射
kubectl get cm istio-sidecar-injector -n istio-system -o yaml | \
sed -e 's/rewriteAppHTTPProbe:false/rewriteAppHTTPProbe:true/' | \
kubectl apply -f -
如果您要安装Istio
,则可以使用istioctl
istioctl manifest apply --set values.sidecarInjectorWebhook.rewriteAppHTTPProbe=true
如果要为特定的部署或pod启用HTTP探针,而不会全局影响其他已安装的资源,请使用sidecar.istio.io/rewriteAppHTTPProbers: "true"
简单注释Pod。如果要自定义探针部分,请看以下示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: liveness-http
spec:
selector:
matchLabels:
app: liveness-http
version: v1
template:
metadata:
labels:
app: liveness-http
version: v1
annotations:
sidecar.istio.io/rewriteAppHTTPProbers: "true"
spec:
containers:
- name: liveness-http
image: docker.io/istio/health:example
ports:
- containerPort: 8001
livenessProbe:
httpGet:
path: /foo
port: 8001
initialDelaySeconds: 5
periodSeconds: 5
有关Istio服务运行状况检查的详细信息,请查看其documentation here。
答案 4 :(得分:0)
我在Istio 1.1.2的OKD 3.11上也遇到了同样的问题。将istio-system名称空间的netid设置为“ 0”后,问题就解决了。
检查netid:
oc get netnamespaces
将netid设置为“ 0”:
oc adm pod-network make-projects-global istio-system