.. _kind_local_registry: ====================== kind集群本地Registry ====================== 虽然使用 :ref:`load_kind_image` 可以用于部署自己的定制镜像,但是使用上有一些不直观。通常我们都是习惯将制作好的镜像推送到Registry中,然后在 Kubernetes 的YAML中直接使用Registry地址。 kind也提供了一种符合我们使用习惯的的本地Registry方式,即在本地Docker中运行一个Local Registry,然后配置kind集群使用这个Local Registry。 创建Registry =================== `kind User Guide: Local Registry `_ 提供了一个脚本 ``kind-with-registry.sh`` 构建本地Registry并配置集群使用: .. literalinclude:: kind_local_registry/kind-with-registry.sh :language: bash :caption: kind官方提供kind-with-registry.sh,可创建具备本地Registry的kind集群 .. note:: 推荐采用 ``本方法`` 替代 :ref:`kind_multi_node` ARM架构Linux环境部署 ---------------------- 我做了一些调整,以适配我在 :ref:`mobile_cloud_arm` 采用 :ref:`kind_multi_node` 部署的集群 ``dev`` : - 指定节点采用ARM架构镜像: 采用 :ref:`debug_kind_create_fail` 指定ARM架构 - 采用 :ref:`kind_multi_node` 配置 - ``kind-with-registry-arm.sh`` 脚本: .. literalinclude:: kind_local_registry/kind-with-registry-arm.sh :language: bash :caption: 运行Registry适配kind集群(dev),ARM架构 :emphasize-lines: 7-10,25-35 - 执行 ``./kind-with-registry.sh`` 创建集群 ``dev`` ,同时可以看到运行了一个 ``kind-registry`` 的容器提供服务 :ref:`macos` 环境部署 ---------------------- 在ARM架构的 :ref:`macos_studio` 部署没有遇到ARM架构Linux环境的问题,所以 - ``kind-with-registry-macos`` 脚本: .. literalinclude:: kind_local_registry/kind-with-registry-macos.sh :language: bash :caption: 运行Registry适配kind集群(dev),macOS环境的Docker Desktop for macOS 使用Registry ================ 将 :ref:`alpine_docker_image` 构建的本地 ``alpine-nginx`` 推送到Local Registry进行测试: - 检查镜像 ``docker images`` ,当前输出如下:: REPOSITORY TAG IMAGE ID CREATED SIZE alpine-nginx latest 236634f9c6b8 3 hours ago 14.5MB - 将镜像打上tag,标记为local registry:: docker tag alpine-nginx localhost:5001/alpine-nginx:latest - 此时检查 ``docker images`` 输出如下:: REPOSITORY TAG IMAGE ID CREATED SIZE alpine-nginx latest 236634f9c6b8 3 hours ago 14.5MB localhost:5001/alpine-nginx latest 236634f9c6b8 3 hours ago 14.5MB - 将镜像推入Local Reistry:: docker push localhost:5001/alpine-nginx 此时输出信息类似:: Using default tag: latest The push refers to repository [localhost:5001/alpine-nginx] 9992941a9f7b: Pushed e9f76b9eead8: Pushed e40a27ff8335: Pushed ea0f922ba68b: Pushed 1f6b17cd478d: Pushed 17bec77d7fdc: Pushed latest: digest: sha256:05e38376828b2d2279517c04e93c2a0b072abbaf0fcbc8e32422c047e9a2c03d size: 1578 - 我们现在来模拟一个简单的Kubernetes部署:: kubectl create deployment test-nginx --image=localhost:5001/alpine-nginx 提示:: deployment.apps/test-nginx created - 检查 kind 部署的这个pod:: kubectl get pods -o wide 可以看到已经成功运行:: NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-nginx-84bcff4756-wszqn 1/1 Running 0 35s 10.244.3.2 dev-worker4 这只是第一步验证,实际上要访问部署在pod的服务,还需要一些步骤: - :ref:`kind_ingress` - :ref:`metallb_with_kind` 参考 ======= - `kind User Guide: Local Registry `_