skaffold / kaniko:从另一个名称空间访问服务

时间:2020-04-12 13:41:07

标签: kubernetes skaffold kaniko

我已将注册表服务部署到命名空间registry中:

$ kubectl get service -n registry
NAME                       TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
registry-docker-registry   ClusterIP   10.43.119.11   <none>        5000/TCP   18h

这是我的skaffold.yaml

apiVersion: skaffold/v2beta1
kind: Config
metadata:
  name: spring-boot-slab
build:
  artifacts:
  - image: skaffold-covid-backend
    kaniko:
      dockerfile: Dockerfile-multistage
      cache: {}
  cluster: {}
deploy:
  kubectl:
    manifests:
    - k8s/*

一切正常,直到kaniko尝试将图像推送到注册表上方为止

获取“ http://registry-docker-registry.registry.svc.cluster.local:5000/v2/”:拨打tcp:在127.0.0.53:53上查找Registry-docker-registry.registry.svc.cluster.local:没有这样的主机

关于如何访问同一kubernetes中部署的此注册表的任何想法吗?

我试图从另一个容器访问注册表:

$ kubectl exec -ti graylog-1 -- curl registry-docker-registry.registry:5000/v2/_catalog
{"repositories":["skaffold-covid-backend","skaffold-covid-backend/cache"]}

如您所见,它能够访问注册表。

3 个答案:

答案 0 :(得分:0)

根据此instruction,您可以访问:

registry-docker-registry.registry

或根据instructions

registry-docker-registry.registry.svc.cluster.local

答案 1 :(得分:0)

  1. 您可以尝试在想要的名称空间中exec的Pod,并尝试卷曲要访问的服务及其端口。格式通常为:
<your-service>.<your-namespace>

因此,您可以使用以下command从预期的吊舱中卷曲它:

curl <your-service>.<your-namespace>:<your-port>
  1. 尝试使用以下命令将port forward服务提供给本地用户:
kubectl -n <namespace> svc/<your-service> <your-localhost-port>:<your-service-port> 

看看您是否可以通过这种方式访问​​它。

答案 2 :(得分:0)

尝试类似这样的方法。我希望这个命令能起作用。

registry-docker-registry.registry.svc.cluster.local