使用注册表别名插件
注册表别名插件
一个 minikube 插件,可帮助使用自定义域名从 minikube 注册表推送和拉取镜像。这些自定义域名将可以在集群内部和 minikube 节点上解析。
如何使用?
启动 minikube
minikube start -p demo
此插件依赖于 registry
插件,在安装别名插件之前需要先启用它
启用内部注册表
minikube addons enable registry
验证注册表部署
watch kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-6955765f44-kpbzt 1/1 Running 0 16m
coredns-6955765f44-lzlsv 1/1 Running 0 16m
etcd-demo 1/1 Running 0 16m
kube-apiserver-demo 1/1 Running 0 16m
kube-controller-manager-demo 1/1 Running 0 16m
kube-proxy-q8rb9 1/1 Running 0 16m
kube-scheduler-demo 1/1 Running 0 16m
*registry-4k8zs* 1/1 Running 0 40s
registry-proxy-vs8jt 1/1 Running 0 40s
storage-provisioner 1/1 Running 0 16m
kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 17m
registry ClusterIP 10.97.247.75 <none> 80/TCP 94s
注意: 请记下
registry
服务的 CLUSTER-IP
启用注册表别名插件
minikube addons enable registry-aliases
🌟 The 'registry-aliases' addon is enabled
您可以检查 minikube 虚拟机的 /etc/hosts
文件以查看注册表别名条目
watch minikube ssh -- cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 demo
10.97.247.75 example.org
10.97.247.75 example.com
10.97.247.75 test.com
10.97.247.75 test.org
上述输出显示 Daemonset 已从 ConfigMap 中添加了 registryAliases
,指向内部注册表的 CLUSTER-IP。
更新 CoreDNS
CoreDNS 将通过 patch-coredns 自动更新。成功的作业运行将使 coredns ConfigMap 更新为如下所示:
apiVersion: v1
data:
Corefile: |-
.:53 {
errors
health
rewrite name example.com registry.kube-system.svc.cluster.local
rewrite name example.org registry.kube-system.svc.cluster.local
rewrite name test.com registry.kube-system.svc.cluster.local
rewrite name test.org registry.kube-system.svc.cluster.local
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
kind: ConfigMap
metadata:
name: coredns
要验证,请运行以下命令:
kubectl get cm -n kube-system coredns -o yaml
成功修补后,您现在可以使用后缀 example.com
、example.org
、test.com
和 test.org
从注册表推送和拉取。
成功运行后,kube-system
命名空间中将显示以下额外 Pod(Daemonset、Job):
NAME READY STATUS RESTARTS AGE
registry-aliases-hosts-update-995vx 1/1 Running 0 47s
registry-aliases-patch-core-dns-zsxfc 0/1 Completed 0 47s
使用示例应用验证
您可以使用示例应用进行端到端部署验证。
git clone https://github.com/kameshsampath/minikube-registry-aliases-demo
cd minikube-registry-aliases-demo
请确保使用 eval $(minikube -p demo docker-env)
设置 Docker 上下文
使用 Skaffold 部署应用
skaffold dev --port-forward
应用运行后,尝试执行 curl localhost:8080
以查看 Hello World
响应
您还可以更新 skaffold.yaml 和 app.yaml,使用 test.org
、test.com
或 example.org
作为容器注册表 URL,并查看所有容器镜像名称解析到内部注册表,从而成功构建和部署。
注意:
您还可以更新 skaffold.yaml 和 app.yaml,使用
test.org
、test.com
或example.org
作为容器注册表 URL,并查看所有容器镜像名称解析到内部注册表,从而成功构建和部署。