tidb-cluster 指定了 image 地址但是不生效

【 TiDB 使用环境】
【概述】:使用公司内部集群部署 tidb 集群,不允许访问外网,因此修改了 tidb-cluster 的 pd 等组件的 image 地址
【背景】:用 helm 部署了修改了地址之后的 chart 包
【现象】:tidb-operator 还是使用 base image 地址去拉镜像,导致镜像下载失败
【问题】:如何强制 tidb-operator 使用 image 字段部署 pd 等服务的 statefulset
【业务影响】:
【TiDB 版本】:5.3.0
【TiDB Operator 版本】:v1.2.6
【K8s 版本】:1.20
【附件】:

你可以先找一个有外网地址的把镜像下载下来。在转移到指定机器

1 个赞

我是这么做了,可以看到我把镜像重新打了 tag 传到了内网镜像仓库,但是还是指定了 pingcap/pd 这个 image,我想让它指定成新版本镜像名

docker load 了吗

2 个赞

额,老哥,我明白你的意思,我现在需求是,希望改变 image 这个镜像名,希望 k8s 集群去下载另一个镜像,那个镜像可以下载,因为我不希望集群每一台机器都 docker load 一遍本地镜像

helm安装的。你要去修改chart 然后检查一下是否应用了

helm -n product get values tidb-cluster
pd:
affinity: {}
annotations: {}
config: |
[log]
level = “info”
[replication]
location-labels = [“region”, “zone”, “rack”, “host”]
hostNetwork: false
image: iregistry.baidu-int.com/vis-search/pd:v5.3.0
imagePullPolicy: IfNotPresent
nodeSelector: {}
podSecurityContext: {}
priorityClassName: “”
replicas: 3
resources:
limits: {}
requests:
storage: 1Gi
service: {}
storageClassName: local-path
tolerations: []

实际上:
kubectl -n product describe statefulset tidb-cluster-pd
Pod Template:
Labels: app.kubernetes.io/component=pd
app.kubernetes.io/instance=tidb-cluster
app.kubernetes.io/managed-by=tidb-operator
app.kubernetes.io/name=tidb-cluster
Annotations: prometheus.io/path: /metrics
prometheus.io/port: 2379
prometheus.io/scrape: true
Containers:
pd:
Image: pingcap/pd
Ports: 2380/TCP, 2379/TCP
Host Ports: 0/TCP, 0/TCP
Command:
/bin/sh
/usr/local/bin/pd_start_script.sh
Environment:
NAMESPACE: (v1:metadata.namespace)
PEER_SERVICE_NAME: tidb-cluster-pd-peer
SERVICE_NAME: tidb-cluster-pd
SET_NAME: tidb-cluster-pd
TZ: UTC
Mounts:
/etc/pd from config (ro)
/etc/podinfo from annotations (ro)
/usr/local/bin from startup-script (ro)
/var/lib/pd from pd (rw)

说明我 chart 指定了 image,但是 tidb-operator 还是去操作集群部署了 image 为 pingcap/pd 的 statefulset,我希望 tidb-operator 部署我指定的 image

helm search repo

搜索一下你的包

helm search repo
NAME CHART VERSION APP VERSION DESCRIPTION
pingcap/tidb-backup v1.2.6 A Helm chart for TiDB Backup or Restore
pingcap/tidb-cluster v1.2.6 A Helm chart for TiDB Cluster
pingcap/tidb-drainer v1.2.6 A Helm chart for TiDB Binlog drainer.
pingcap/tidb-lightning v1.2.6 A Helm chart for TiDB Lightning
pingcap/tidb-operator v1.2.6 v1.2.6 tidb-operator Helm chart for Kubernetes
pingcap/tikv-importer v1.2.6 A Helm chart for TiKV Importer
pingcap/tikv-operator v0.1.0 v0.1.0 A Helm chart for Kubernetes

这不对啊。还是之前的
helm repo update。更新过吗

哦,我不是通过这里直接装的,我是下载下来压缩包,改了 pingcap/tidb-cluster v1.2.6 压缩包里面 values 文件,再安装的,实际上集群显示我已经指定了 image 的镜像地址了,但是没生效,但是我注意到 chart 包源码(https://github.com/pingcap/tidb-operator/blob/v1.2.6/charts/tidb-cluster/templates/tidb-cluster.yaml#L34)里面没有指定 baseImage,但是官方指定的例子文件(https://github.com/pingcap/tidb-operator/blob/v1.2.6/examples/namespaced/tidb-cluster.yaml)中,包含了这个 baseImage 字段,估计 tidb-operator 应该是忽略了 image 字段,采用了 baseImage 字段,所以我装了 pingcap/tidb-cluster v1.2.6,虽然改了这个包的 values.yaml,但还是失效了

1 个赞

直接修改baseImage 呢

我直接改了 chart ok 了,这个 chart 包确实有问题

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。