博文纲领:
使用kind构筑本地k8s开发环境
1、使用kind工具构建本地K8s环境,包含两个步骤:使用kind命令构建集群,使用kind load命令加载集群文件。
2、构建本地K8s环境的主要步骤:使用kind命令构建集群:首先,你需要使用kind工具提供的命令来创建一个本地的Kubernetes集群。这是使用kind构筑开发环境的基础步骤。加载集群文件:在某些情况下,你可能需要将特定的配置文件或镜像加载到集群中。这可以通过kind load命令来实现。
3、搭建k8s本地环境,尤其是使用minikube,是为了在开发过程中保持与生产环境一致,方便进行实验和调试。在选择小型k8s时,市面上有k0s、MicroK8s、kind、k3s和Minikube等供开发者挑选。其中,Minikube因其易于配置和使用,受到广泛欢迎。开始搭建过程,首先需要安装Docker。
4、安装 Kind 和 Kubectl,通过链接:yuque.com/xyy-onlyone/e...(20216)进行测试。安装 Terraform,并通过 ucloud 拉取镜像并重新打上标签,确保已拉取好镜像。参照链接:yuque.com/xyy-onlyone/e...使用 Terraform 部署 Kubernetes 集群,如遇到插件安装失败问题,重新安装即可。
记一次请求头header丢失问题排查实录
此次请求头header丢失问题的原因是nginx默认将包含下划线的请求头字段视为无效,导致token的header参数key为auth_token时被视为无效字段。添加underscores_in_headers on配置后,nginx允许下划线出现在请求头中,接口便能正常运行。
前端小王需要调用后端接口,但因跨域问题无法成功请求。领导建议搭建反向代理解决此问题。小王配置nginx后发现跨域问题解决,但接口返回异常,且老张表示token为空。小王坚持认为已正确携带token,而老张接口未出现过此问题。为查明原因,他们请教了在公司有威望的程序员老黄。
在开发环境的时候,由于前端使用node.js进行代理端口,所以并没有什么问题,但是由于生产环境使用的是 Nginx 进行静态资源压缩,所以HTML页面发起的HTTP请求都是被Nginx所转发的,经过查阅资料发现,Nginx配置的 underscores_in_headers 项自动过滤了Header头部的下划线的参数。
ingressnginx
将上述配置文件保存为`nginx-ingress.yaml`并使用以下命令创建ingress:bash kubectl create -f nginx-ingress.yaml 在安装和配置完成之后,您可以通过访问`foo.bar.com`来测试ingress是否正常工作。
Ingress Nginx 是 Kubernetes 中的一个核心组件,它作为网络入口控制器,负责处理外部访问流量。它将外部请求路由到集群内的服务上。Ingress Nginx 提供了负载均衡、SSL 终止和静态内容服务等功能,从而简化了微服务之间的流量管理。此外,它还具有灵活的配置选项和扩展性,允许根据需要进行定制和扩展。
部署 Ingress 时,需要下载配置文件,通常在公众号后台回复“ingress-nginx配置文件”即可获取。配置文件中可能包含创建命名空间(如“ingress-nginx”)和下载镜像等操作。在部署完成后,检查 pod 是否处于“running”状态来确认部署成功。如果遇到异常状态,可使用命令查看具体原因。
接下来,探索 Ingress-Nginx 中的 Lua 脚本功能。创建一个配置为防止请求体中出现非 email 格式的用户名的 Lua 脚本,并将其添加至 Ingress Nginx 的 deployment。此更改将触发 Pod 重新创建。在 configMap 中添加 Lua 脚本插件,验证脚本效果。
了解 Ingress 工作原理,对于与运维人员进行有效沟通至关重要。当需要通过 Ingress-nginx 暴露 Kibana 服务时,会遇到如何利用 rewrite-target 注解进行域名重定向的问题。以 logging.internal.gridsum.com... 为例,可以使用 rewrite-target 来重定向到后端 ElasticSearch 站点,并且忽略 es 这个路径。