kubeadm 中的类负载或 minikube 缓存的等价物
Equivalent of kind load or minikube cache in kubeadm
我有 3 个使用 kubeadm 管理的节点 kubernetes 集群。以前我用过 kind 和 minikube。当我想基于 docker 图像进行部署时,我只需要 make:
- 实物加载docker-实物图片或,
- minikube 缓存添加到 minikube,
现在,当我想在 kubeadm 中进行部署时,我显然得到了 ImagePullBackOff。
问题:是否有等效的注释将图像添加到 kubeadm 而我找不到它,或者完全有其他方法可以解决该问题?
编辑
可能问题不够清楚,所以我没有删除它,而是尝试提供更多细节。
我有树节点(一个控制平面和两个工人),每个节点上都安装了 docker、kubeadm、kubelet 和 kubectl。我未来集群的一个部署是机器学习模块,所以我需要 tensorflow:
docker pull tensorflow/tensorflow
我使用这个图像构建了自己的图像:
docker build -t mlimage:cluster -f ml.Dockerfile .
接下来我准备deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mldeployment
spec:
selector:
matchLabels:
app: mldeployment
name: mldeployment
replicas: 1
template:
metadata:
labels:
app: mldeployment
name: mldeployment
spec:
containers:
- name: mlcontainer
image: mlimage:cluster
imagePullPolicy: Never
ports:
- name: http
containerPort: 6060
并创建它:
kubectl create -f mldeployment.yaml
现在,当我输入时
kubectl describe pod
在 mldeployment 中有这些事件:
在 minikube 或 kind 的情况下,只需将图像添加到集群类型就足够了
minikibe cache add ...
和
kind load docker-image ...
分别
问题是在从 kubeadm 管理图像的情况下如何将图像从我的机器添加到集群。我认为对于 minikube 或 kind 有类似的方法(无需创建与 docker 集线器的任何连接,因为一切都在本地)。
你得到 ImagePullBackOff 因为 kubeadm 可能会检查注册表。
而如果您同时查看命令 minikube 缓存 和 kind load 用于将本地图像加载到集群中。
据我所知,通过 kubeadm 管理的集群镜像应该存储在受信任的注册表中,例如 dockerhub 或云。但是如果你想在分离的网络中做出快速的解决方案,有一个可能性:Docker registry。
还有一些工具可以使用,例如Trow, or simpler solution。
我使用了第二种方法,并且有效(代码有点旧,因此可能需要一些更改,此链接可能会有所帮助:,
修改后,首先创建deployment和daemonSet:
kubectl create -f docker-private-registry.json
kubectl create -f docker-private-registry-proxy.json
将本地主机地址添加到图像:
docker tag image:tag 127.0.0.1:5000/image:tag
检查 docker 私有注册表部署的全名和转发端口(将 x 替换为准确的部署名称:
kubectl get pod
kubectl port-forward docker-private-registry-deployment-xxxxxxxxx-xxxxx 5000:5000 -n default
打开下一个终端 window 并将图像推送到私有注册表:
docker push 127.0.0.1:5000/image:tag
最终更改 deployment.yaml 文件容器映像(添加 127.0.0.1:5000/...)并创建部署。
此解决方案非常不安全且易受攻击,因此请明智地在单独的网络中使用它以进行测试和开发。
我有 3 个使用 kubeadm 管理的节点 kubernetes 集群。以前我用过 kind 和 minikube。当我想基于 docker 图像进行部署时,我只需要 make:
- 实物加载docker-实物图片或,
- minikube 缓存添加到 minikube,
现在,当我想在 kubeadm 中进行部署时,我显然得到了 ImagePullBackOff。 问题:是否有等效的注释将图像添加到 kubeadm 而我找不到它,或者完全有其他方法可以解决该问题?
编辑
可能问题不够清楚,所以我没有删除它,而是尝试提供更多细节。
我有树节点(一个控制平面和两个工人),每个节点上都安装了 docker、kubeadm、kubelet 和 kubectl。我未来集群的一个部署是机器学习模块,所以我需要 tensorflow:
docker pull tensorflow/tensorflow
我使用这个图像构建了自己的图像:
docker build -t mlimage:cluster -f ml.Dockerfile .
接下来我准备deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mldeployment
spec:
selector:
matchLabels:
app: mldeployment
name: mldeployment
replicas: 1
template:
metadata:
labels:
app: mldeployment
name: mldeployment
spec:
containers:
- name: mlcontainer
image: mlimage:cluster
imagePullPolicy: Never
ports:
- name: http
containerPort: 6060
并创建它:
kubectl create -f mldeployment.yaml
现在,当我输入时
kubectl describe pod
在 mldeployment 中有这些事件:
在 minikube 或 kind 的情况下,只需将图像添加到集群类型就足够了
minikibe cache add ...
和
kind load docker-image ...
分别
问题是在从 kubeadm 管理图像的情况下如何将图像从我的机器添加到集群。我认为对于 minikube 或 kind 有类似的方法(无需创建与 docker 集线器的任何连接,因为一切都在本地)。
你得到 ImagePullBackOff 因为 kubeadm 可能会检查注册表。
而如果您同时查看命令 minikube 缓存 和 kind load 用于将本地图像加载到集群中。
据我所知,通过 kubeadm 管理的集群镜像应该存储在受信任的注册表中,例如 dockerhub 或云。但是如果你想在分离的网络中做出快速的解决方案,有一个可能性:Docker registry。
还有一些工具可以使用,例如Trow, or simpler solution。
我使用了第二种方法,并且有效(代码有点旧,因此可能需要一些更改,此链接可能会有所帮助:
修改后,首先创建deployment和daemonSet:
kubectl create -f docker-private-registry.json
kubectl create -f docker-private-registry-proxy.json
将本地主机地址添加到图像:
docker tag image:tag 127.0.0.1:5000/image:tag
检查 docker 私有注册表部署的全名和转发端口(将 x 替换为准确的部署名称:
kubectl get pod
kubectl port-forward docker-private-registry-deployment-xxxxxxxxx-xxxxx 5000:5000 -n default
打开下一个终端 window 并将图像推送到私有注册表:
docker push 127.0.0.1:5000/image:tag
最终更改 deployment.yaml 文件容器映像(添加 127.0.0.1:5000/...)并创建部署。
此解决方案非常不安全且易受攻击,因此请明智地在单独的网络中使用它以进行测试和开发。