k8s中ingress公有云迁移记录
业务需求:几个服务从某公有云环境迁移到另一个公有云环境,分为三个步骤在新的公有云环境中发布 svc 和 deploy,configmap,secret在新的公有云环境中发布 ingress,发布完成后,绑定 hosts 进行测试在第二步测试访问无异常后,解析域名到新的公有云的 k8s 的负载均衡器上由于我们的这几个业务没有承接线上流量,开发人员先解析了域名,然后再部署的 ingress,在新部署
业务需求:几个服务从某公有云环境迁移到另一个公有云环境,分为三个步骤
- 在新的公有云环境中发布 svc 和 deploy,configmap,secret
- 在新的公有云环境中发布 ingress,发布完成后,绑定 hosts 进行测试
- 在第二步测试访问无异常后,解析域名到新的公有云的 k8s 的负载均衡器上
由于我们的这几个业务没有承接线上流量,开发人员先解析了域名,然后再部署的 ingress,在新部署 ingress 的过程中,发生了下面的错误,联系我解决,故,记录下来,也方便开发人员查看
错误1:ingress 配置错误
原理:流量从 ingress 到 svc,所以 ingress 中 Path 配置的 svc name 和端口,必须和 kubectl get svc -n ued
中获取的一致
解决办法:查看 svc 地址和端口,修改 ingress
> kubectl describe ingress -n ued multi-screen-manager-ingress
Name: multi-screen-manager-ingress
Namespace: ued
Address:
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
multi-screen.test.cn # 此处配置的 svc 名称和端口,必须和 kubectl get svc multi-screens-service -n ued 获取的一致,
# 所以此处也要改成 multi-screens-service:8080
/admin multi-screens-service:80 (<none>)
Annotations:
......
Events: <none>
> kubectl get svc multi-screens-service -n ued
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
multi-screens-service ClusterIP 10.2.233.190 <none> 8080/TCP 116m
错误2:svc 配置错误
现象:上面 ingress 和 svc 配置成功后,开发反馈服务访问 404
其实上面的 ingress 检查还忽略了一个细节,即,没有 ep 地址
Rules:
Host Path Backends
---- ---- --------
multi-screen.test.cn # 没有 ep 地址,显示 <none>
/admin multi-screens-service:80 (<none>)
使用 kuebctl
命令查看,也显示 <none>
> kubectl get ep -n ued multi-screens-service
NAME ENDPOINTS AGE
multi-screens-service <none> 116m
>
这一般都是 svc 和 pod(deploy)之间的配置问题,基本都是标签选择器不匹配的问题
查看 svc(multi-screens-service )的 yaml 文件,发现 svc 定义的标签选择器是app: multi-screens-service
yaml 文件如下:
selector: # 标签选择器
app: multi-screens-service # 标签 key 和 values
根据 svc 查看 pod,发现 pod 定义的标签和 svc 中标签选择器的定义无法匹配,所以请求无法转发到 pod 上
> kubectl get pod -n ued |grep multi-screens
multi-screens-7cf854f9bd-zvj28 1/1 Running 0 17m
multi-screens-test-8484f78c5d-4wcn8 1/1 Running 0 17m
> kubectl get pod -n ued --show-labels|grep multi-screens
multi-screens-7cf854f9bd-zvj28 1/1 Running 0 17m app=multi-screens,owner=mhhe,pod-template-hash=7cf854f9bd,projectname=multi-screens
multi-screens-test-8484f78c5d-4wcn8 1/1 Running 0 17m app=multi-screens-test,owner=mhhe,pod-template-hash=8484f78c5d,projectname=multi-screens-test
>
解决办法:修改 svc 中标签选择器的值 (values),或者修改 pod 的标签
svc 中标签选择器的正确写法:
selector: # 标签选择器
app: multi-screens # 标签 key 和 values
更多推荐
所有评论(0)