Python SDK外部连接本地K8s托管Couchbase的连接串配置方法
Kubernetes集群外部Python SDK连接本地K8s托管Couchbase配置指南
你已完成K8s上的Couchbase集群部署,要从集群外本地运行Python程序连接,核心需要先完成服务暴露,再正确拼接连接串,具体操作如下:
1. 暴露Couchbase服务到集群外部
Couchbase默认部署为ClusterIP类型服务,仅支持集群内部访问,外部连接必须先做服务暴露,本地测试优先选端口转发方案,操作成本最低:
- 端口转发方案:执行kubectl命令映射Couchbase全量所需端口到本地
必须同时映射管理端口、KV端口、查询/索引/搜索相关端口,否则会出现管理端可访问但SDK读写、查询失败的问题# 先查询Couchbase对应的服务名 kubectl get svc | grep couchbase # 替换命令中的<couchbase-service-name>为查询到的实际服务名 kubectl port-forward svc/<couchbase-service-name> 8091:8091 11207:11207 11210:11210 8092:8092 8093:8093 8094:8094 8095:8095 8096:8096 - 其他可选暴露方案:
- 局域网测试可将Service类型修改为NodePort,通过K8s节点IP+对应NodePort访问
- 长期使用可配置Ingress规则,通过自定义域名访问
2. connection_string参数填写规则
根据你选择的暴露方案对应填写即可:
- 用端口转发本地测试场景:直接填
couchbase://localhost,如果转发时自定义了本地映射端口,需要在地址后追加端口号,例如本地把8091映射为18091时填couchbase://localhost:18091 - 用NodePort暴露场景:填
couchbase://<K8s节点本机IP>:<8091端口对应的NodePort号> - 用Ingress配置域名场景:填
couchbase://<你配置的访问域名> - 如果开启了TLS加密连接,将连接串前缀替换为
couchbases://,同时确保11207加密端口已放通/映射
3. 可直接运行的参考代码
import os from couchbase.cluster import Cluster from couchbase.auth import PasswordAuthenticator from couchbase.options import ClusterOptions connection_string = "couchbase://localhost" cluster = Cluster.connect(connection_string, ClusterOptions(PasswordAuthenticator(os.getenv("LOGIN"), os.getenv("PASSWORD")))) bucket = cluster.bucket('travel-sample') coll = bucket.default_collection() query_iter = cluster.query("SELECT * FROM `travel-sample` LIMIT 100") for r in query_iter.rows(): print(f"Found row: {r}")
前置校验项
运行代码前先确认以下配置,避免无意义排查:
- 本地浏览器可正常打开Couchbase管理控制台(地址为
http://<连接串中的IP/域名>:<管理端口>),配置的账号密码可正常登录 - 控制台中已创建
travel-sample存储桶,且使用的账号拥有该桶的读写、查询权限 - 本地Python环境安装的Couchbase SDK版本与部署的Couchbase集群版本兼容
部署效果参考:
内容的提问来源于stack exchange,提问作者BloodthirstyPlatypus
相关产品推荐
相关产品推荐

