Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Serverless集群无法公网访问APIServer

Serverless集群无法公网访问APIServer

原创
作者头像
聂伟星
发布于 2024-08-21 16:08:36
发布于 2024-08-21 16:08:36
3750
举报

1. 问题现象

Serverless集群开启了公网访问,客户端配置了kubeconfig,但是执行kubectl无法访问到集群,直接telnet公网访问clb的443端口也是不通,看clb的安全组是放通了443端口的。

公网访问Serverless集群的apiserver,链路是客户端--->clb--->Deployment:kubernetes-proxy(default)--->master(apiserver),这里clb配置没问题,那说明是kubernetes-proxy这里可能异常了,看pod是正常running的,但是日志一直报错

2. 问题原因

看报错是tls握手失败,抓包发现是因为https访问新的域名化clb(类似lb-xxxxx-zw9a273lycj6durt.clb.sh-tencentclb.com),tls的client hello会被reset,reset的ttl与正常报文的ttl不同

http访问新的域名化clb(类似lb-xxxxx-zw9a273lycj6durt.clb.sh-tencentclb.com),会通过http 302 localtion跳转到CLB的默认域名阻断提示页面,可以参考文档https://cloud.tencent.com/document/product/214/105270

这里原因就是clb默认域名阻断导致的。

3. 解决方案

因为现在账号默认都是开启clb域名化,创建的出来的clb都是域名化,在Serverless控制台开启公网访问,会自动创建kubernetes-proxy-public这个公网类型的service,并关联创建出一个公网clb,然后将clb的公网域名配置到kubernetes-proxy

这个deployment的domains启动参数,domains这个参数的含义就是会将配置域名签到apiserver的证书里面

因为clb默认域名不能使用,那就只能用业务自己的域名,如何更换apiserver为业务自定义域名,可以如下操作

1. 首先确定下集群的访问域名,建议可以用集群id+业务域名,比如我的业务域名是niewx.cn,集群id是cls-xxxx,那域名就可以配置为cls-xxxx.niewx.cn。

2. 然后修改yaml将cls-xxxx.niewx.cn加到kubernetes-proxy这个deployment的domains启动参数中,更新重建pod

3. 在dns解析配置cname记录

4. 修改kubeconfig的server地址,改成业务自定义的域名

5. 保存后就可以正常访问了集群apiserver了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TKE集群如何手动创建apiserver内网和公网访问入口
TKE集群的apiserver访问,可以在控制台开启,但是没法通过公网ip去访问,只能是自定义域名,如果想要用公网ip去访问,则需要进行一定的改动。
聂伟星
2024/10/05
2120
TKE集群如何在pod内执行kubectl访问apiserver及登录node节点
腾讯云上创建一个TKE集群,一般都是需要开启集群的内网或者公网访问,才能kubectl访问集群apiserver,如果要登录node节点,需要ssh工具去登录,这种一般要有节点秘钥或者密码,但是一般只有运维才有节点登录方式。 下面我们来说说如何创建一个pod,来访问集群的apiserver,并登录node节点,下面我说的方式,是不需要节点登录密码或者秘钥,也不需要集群开启内网或者公网访问。
聂伟星
2024/10/04
2200
使用 K8S 官方 SDK 连接tke集群 API Server 报错处理
今天有个同事反馈在使用 K8S 官方 SDK 连接tke集群 API Server 报错 certificate verify failed self signed certificate 。
linus_lin
2024/09/06
1320
使用 K8S 官方 SDK 连接tke集群 API Server 报错处理
【TKE】 平台常见问题 QA
本文章将以 QA 方式记录在使用 TKE 产品过程中的可能会遇到的常见问题解答,将不定期更新。
Jokey
2022/10/09
2.8K0
如何用证书或者token访问TKE集群api接口
使用k8s的过程中我们会经常访问集群的api接口,但是通常k8s的apiserver都是用https认证,当我们想直接访问api接口的时候都是需要进行认证的,这个在tke集群中同样也是如此,那么当我们需要在代码或者用curl请求去访问tke集群的api接口该怎么办呢?下面我们讲讲通过客户端证书或者集群token来访问tke集群的api接口。
聂伟星
2021/04/17
2.9K0
TKE集群节点执行kubectl报错
kubectl是一种访问k8s集群的命令行工具,其实就是通过kubecofng来和apiserver进行身份鉴权,然后调用apiserver的接口,获取对应的信息。tke集群默认每个节点会安装kubectl命令的,大家可以随便登录一个节点通过kubectl命令去访问集群,但是新建集群或者新加节点到集群的时候,会出现新节点隔一段后执行kubectl命令报错的问题,具体报错如下:
聂伟星
2021/04/12
1.6K0
二进制安装k8s集群(16)-安装nginx-ingress-controller
在上一篇文章里我们主要介绍安装k8s集群内的基础服务kube-dashboard,这里我们继续介绍安装k8s集群内基础服务nginx-ingress,这个基础服务也创建在kube-system namesapce里,是以deployment的方式运行。当然 daemonset也是可以的,这里没有硬性要求。image镜像从我们的private repo pull(以前文章里介绍过harbor private repo的创建,以及镜像的push和pull)。当然原始image来源于官方的quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1,不过要下载它需要科学上网或者搭个梯子。另外对于ingress方案,一般有nginx-ingress,traefik ingress(traefik2.0也已经问世了,都是可以选择的),haproxy ingress等,实际情况用哪种请根据团队和实际的需求来选择。
TA码字
2020/04/01
1.4K0
二进制安装k8s集群(16)-安装nginx-ingress-controller
TKE操作指南 - 部署wordpress 容器服务下(十一)
在进行wordpress Deployment的访问设置之前,我们先介绍TKE 容器化业务的访问方式!
亮哥说TKE
2019/08/06
1.3K0
TKE集群CLB 回环问题总结
使用 TKE 的内部和外部客户,经常会遇到因 CLB 回环问题导致服务访问不通或访问 Ingress 几秒延时的现象,本文就此问题介绍下相关背景、原因以及一些思考与建议。
聂伟星
2021/02/05
4.7K1
TKE集群内外网访问如何使用已有的clb
使用tke的时候,我们会需要开启集群的内网或者外网访问到apiserver,开启内外网访问,会自动创建内网clb的service或者外网clb的service,service会关联自动创建一个clb,很多时候,我们想复用下已有的lclb实例,下面我们说下如何配置TKE集群内外网访问使用已有的clb。
聂伟星
2022/11/01
1.3K0
TKE之Traefik最佳实践
k8s的接入层有很多种,常见的7层负载均衡有nginx-ingress、traefik、kong等,还有每个云厂商为了对接自己的负载均衡产品所开发的控制器,tke集群现在默认是clb类型ingress,也支持组件安装nginx-ingress到集群内使用,其他类型的网关,需要自己在集群内部署才行,今天我们讲讲traefik在tke上的部署安装和一些使用实践。
聂伟星
2022/03/18
2.5K0
tke在pod内通过kubectl访问集群
现在各类云厂商都有提供托管的k8s服务,并且有提供可视化的前端来访问集群内资源,同样tke集群也是如此,但是作为一个k8s的使用者,用kubectl来访问集群是必不可少的,tke控制台并不是会显示所有资源类型,像一些自定义的crd就只能通过命令查看了,并且及时有控制台查看,很多大佬还是习惯命令操作了。但是云上的权限一般都管控比较严格,你可能只有控制台操作权限,没有登录机器的权限,又或者说你的集群没有开启公网访问,只能内网访问,这个时候该怎么通过kubectl去访问集群呢?
聂伟星
2021/10/15
1.9K1
Traefik1.7.17的部署使用
因为我这里是作为kubernetes服务的暴露,因此你得有一个kubernetes集群
聂伟星
2020/07/12
1.3K0
Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记
如果更改了k8s service的网段需要将coredns的serviceIP改成k8s service网段的第十个IP
郑子铭
2021/07/20
1.6K0
Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记
K8S集群安装
主要参考 https://github.com/opsnull/follow-me-install-kubernetes-cluster
JadePeng
2018/12/12
4.3K0
## Kubernetes集群中流量暴露的几种方案 Kubernetes集群中流量暴露的几种方案
在业务使用Kubernetes进行编排管理时,针对业务的南北流量的接入,在Kuberentes中通常有几种方案,本文就接入的方案进行简单介绍。
KaliArch
2022/06/24
1.2K0
TKE上搭建集群Dashboard
如果需要将TKE的信息展示给多个部门的人查看,但是又不想让他们通过控制台查看,这边可以搭建一个dashborad用来展示。
聂伟星
2020/07/30
1.1K0
二进制安装Kubernetes(k8s) v1.24.3 IPv4/IPv6双栈 -- - (下)
若不要IPv6 ,不给网卡配置IPv6即可,不要对IPv6相关配置删除或操作,否则会出问题。
小陈运维
2022/07/14
1.1K0
4.最新实践基于Containerd安装部署高可用Kubernetes集群
[TOC] 0x00 前言简述 描述: 在我博客以及前面的文章之中讲解Kubernetes相关集群环境的搭建, 随着K8S及其相关组件的迭代, 与读者当前接触的版本有所不同,所以在当前【2022年4月26日 10:08:29】时间节点,博主使用ubuntu 20.04 、haproxy、keepalive、containerd、etcd、kubeadm、kubectl 等相关工具插件【最新或者稳定的版本】进行实践高可用的kubernetes集群的搭建,这里不再对k8s等相关基础知识做介绍,如有新入门的童鞋
全栈工程师修炼指南
2022/09/29
4K0
4.最新实践基于Containerd安装部署高可用Kubernetes集群
TKE集群中nginx-ingress使用实践
现在k8s上服务暴露方式用的最多就是nginx-ingress,今天我们来讲讲nginx-ingress的具体使用,我们在tke上实践下,如何部署使用nginx-ingress,以及nginx的一些注解功能的使用。
聂伟星
2020/12/31
4.3K3
相关推荐
TKE集群如何手动创建apiserver内网和公网访问入口
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档