我已经根据官方教程设置了单节点 kubernetes 。
除了官方文档,我还设置了单节点集群:
kubectl taint nodes --all node-role.kubernetes.io/master-
Run Code Online (Sandbox Code Playgroud)
残疾人驱逐限制:
cat << EOF >> /var/lib/kubelet/config.yaml
evictionHard:
imagefs.available: 1%
memory.available: 100Mi
nodefs.available: 1%
nodefs.inodesFree: 1%
EOF
systemctl daemon-reload
systemctl restart kubelet
Run Code Online (Sandbox Code Playgroud)
并为 Docker 设置 systemd 驱动程序:
cat << EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
systemctl daemon-reload
systemctl restart docker
Run Code Online (Sandbox Code Playgroud)
我试过以下:
docker build -t localhost:5000/my-image .
kubectl run -it --rm --restart=Always --image=localhost:5000/my-image my-image
Run Code Online (Sandbox Code Playgroud)
但是在 pod 日志中我看到ImagePullBackOff. 如果我设置了本地存储库并docker push localhost:5000/my-image在构建映像后进行,那么一切正常。
是否可以使用本地图像(发布后已经可用docker images)而无需设置本地存储库,推送到该存储库然后从中拉取?
您只需将规范imagePullPolicy中的Pod模板设置container为Never. 否则kubelet会尝试拉取镜像。示例Pod定义可能如下所示:
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: uses-local-image
image: local-image-name
imagePullPolicy: Never
Run Code Online (Sandbox Code Playgroud)
默认情况下,kubelet 会尝试从指定的注册表中拉取每个镜像。但是,如果
imagePullPolicy容器的 属性设置为IfNotPresent或Never,则使用本地图像(分别优先或专门)。如果您想依靠预拉镜像来代替注册中心身份验证,您必须确保集群中的所有节点都具有相同的预拉镜像。
这可用于预加载某些图像以提高速度或作为对私有注册表进行身份验证的替代方法。
所有 pod 都可以读取任何预先提取的图像。
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |