
vistalba/kubernetes-cloudflare-syncKubernetes Cloudflare Sync 是一个专为在 GKE(Google Kubernetes Engine)上的 Kubernetes 集群设计的工具,主要功能是将 Cloudflare 的 DNS 记录与集群中的节点 IP 地址进行同步,确保 DNS 记录始终反映当前的节点 IP 情况,避免因节点 IP 变化导致的 DNS 解析问题。
适用于需要动态管理 DNS 记录,减少手动操作,确保外部服务通过 DNS 访问集群时始终指向正确节点 IP 的场景。
GKE 为每个集群提供私有容器镜像仓库,以下命令用于构建应用镜像并推送到集群特定仓库:
bashdocker build -t gcr.io/PROJECT_ID/kubernetes-cloudflare-sync:latest . docker push gcr.io/PROJECT_ID/kubernetes-cloudflare-sync:latest
注意:请将
PROJECT_ID替换为你的 GCP 项目 ID。
创建 Deployment YAML 文件定义应用部署参数:
yamlapiVersion: apps/v1 kind: Deployment metadata: name: kubernetes-cloudflare-sync labels: app: kubernetes-cloudflare-sync spec: replicas: 1 selector: matchLabels: app: kubernetes-cloudflare-sync template: metadata: labels: app: kubernetes-cloudflare-sync spec: serviceAccountName: kubernetes-cloudflare-sync containers: - name: kubernetes-cloudflare-sync image: gcr.io/PROJECT_ID/kubernetes-cloudflare-sync args: - --dns-name=kubernetes.example.com # 替换为需要同步的 DNS 名称 env: - name: CF_API_KEY valueFrom: secretKeyRef: name: cloudflare key: api-key - name: CF_API_EMAIL valueFrom: secretKeyRef: name: cloudflare key: email
重要:请将
PROJECT_ID替换为你的 GCP 项目 ID,并将--dns-name的值替换为实际需要同步的 DNS 名称。
应用需要两种权限:
创建 Cloudflare Secret
存储 Cloudflare API 密钥和***到 Kubernetes Secret:
bashkubectl create secret generic cloudflare --from-literal=email=YOUR_CLOUDFLARE_ACCOUNT_EMAIL_ADDRESS_HERE --from-literal=api-key=YOUR_CLOUDFLARE_GLOBAL_API_KEY_HERE
请将
YOUR_CLOUDFLARE_ACCOUNT_EMAIL_ADDRESS_HERE替换为你的 Cloudflare 账户***,YOUR_CLOUDFLARE_GLOBAL_API_KEY_HERE替换为你的 Cloudflare 全局 API 密钥。
RBAC 配置
创建 Service Account、ClusterRole 及 ClusterRoleBinding:
yamlapiVersion: v1 kind: ServiceAccount metadata: name: kubernetes-cloudflare-sync --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kubernetes-cloudflare-sync rules: - apiGroups: [""] resources: ["nodes"] verbs: ["list", "watch"] # 允许获取节点信息 --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubernetes-cloudflare-sync-viewer roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: kubernetes-cloudflare-sync subjects: - kind: ServiceAccount name: kubernetes-cloudflare-sync namespace: default
将所有配置文件应用到集群:
bashkubectl apply -f . # 假设配置文件都在当前目录下
| 环境变量名 | 描述 | 来源 |
|---|---|---|
CF_API_KEY | Cloudflare 全局 API 密钥 | 从名为 cloudflare 的 Secret 中获取,键为 api-key |
CF_API_EMAIL | Cloudflare 账户*** | 从名为 cloudflare 的 Secret 中获取,键为 email |
| 参数名 | 描述 | 示例 |
|---|---|---|
--dns-name | 需要同步的 DNS 记录名称 | --dns-name=kubernetes.example.com |


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务