使用注册表别名插件
注册表别名插件
一个 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
您可以查看 mikikube 虚拟机的 /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 已从指向内部注册表的 **CLUSTER-IP** 的 ConfigMap 添加了 registryAliases
。
更新 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,并查看所有 > 容器镜像名称解析为内部注册表,从而成功构建和部署。