Kubernetes部署本地机器

时间:2019-08-25 14:07:15

标签: kubernetes

我有一个Oracle OCI Kubernetes集群。我用Loadbalancer测试了一个示例nginx,它工作正常并且可以从外部访问。现在,我的本地计算机上(而不是群集节点上)有一个DB&Weblogic docker容器映像。当我尝试部署它们时,我收到一条错误消息,指出未在注册表中找到它。我尚未将图像上传到注册表。我的问题是,有没有办法在运行kubectl的本地盒子上直接引用该图像并进行部署?

nginx示例作品

root@docker-forms-ubuntu:/docker/kubernetes# docker images
REPOSITORY                                         TAG                 IMAGE ID            CREATED             SIZE
oracle/database                                    12.2.0.1-ee         190ad0c5e1c8        46 hours ago        6.12GB
localhost/oracle/formsreports                      12.2.1.3            cd673b530298        3 days ago          14.7GB
oracle/fmw-infrastructure                          12.2.1.3            a167bf2e519e        3 days ago          6.29GB
oracle/serverjdk                                   8                   f34272b9b150        3 days ago          642MB
iad.ocir.io/orasenatdpublicsector05/guru/oracldb   12.2.1.3            331e9a596394        3 days ago          6.12GB
nginx                                              latest              5a3221f0137b        9 days ago          126MB
oraclelinux                                        7-slim              874477adb545        2 weeks ago         118MB
oraclelinux                                        latest              5f993b1aafe5        2 weeks ago         235MB
hello-world                                        latest              fce289e99eb9        7 months ago        1.84kB
root@docker-forms-ubuntu:/docker/kubernetes#

  Normal   Scheduled  22s                default-scheduler   Successfully assigned default/database-7d95f6774f-bl55h to 10.0.10.2
  Normal   BackOff    19s (x2 over 20s)  kubelet, 10.0.10.2  Back-off pulling image "oracle/database:12.2.0.1-ee"
  Warning  Failed     19s (x2 over 20s)  kubelet, 10.0.10.2  Error: ImagePullBackOff
  Normal   Pulling    5s (x2 over 21s)   kubelet, 10.0.10.2  pulling image "oracle/database:12.2.0.1-ee"
  Warning  Failed     4s (x2 over 21s)   kubelet, 10.0.10.2  Failed to pull image "oracle/database:12.2.0.1-ee": rpc error: code = Unknown desc = pull access denied for oracle/database, repository does not exist or may require 'docker login'
  Warning  Failed     4s (x2 over 21s)   kubelet, 10.0.10.2  Error: ErrImagePull

2 个答案:

答案 0 :(得分:1)

  

有没有一种方法可以直接引用本地盒子上的图像

不。所有人都需要运行或有权使用Docker注册表服务器才能使用Kubernetes。

您不能直接从其他系统的Docker守护程序下载内容。 Kubernetes甚至不将图像存储在集群中:当pod规范具有image:时,运行它的每个单独节点都会关闭并检索图像内容。这样做的结果是,您必须将映像上传到 somewhere ,以便Kubernetes节点可以下载它,并且“ somewhere”是Docker注册表服务(Docker Hub,一个私有注册表) ,如Amazon ECR等云服务,...)。

各种Kubernetes-on-Your-Workstation安装(minikube,kind,...)通常可以通过某种方式直接使用Kubernetes节点的Docker守护程序或将映像上传到“集群”中,但这并没有听起来像您的情况。

答案 1 :(得分:0)

好吧,如果出于测试目的,请使用docker save,然后使用scp复制到节点,然后将imagePullPolicy设置为Never。但是只是不要将其用于生产,请使用容器注册表,如果没有注册表,请使用this helm chart将一个注册表部署到您的集群中,这将是私有的。