我是kubernetes的新手。最近,我成功地使用在线服务器管理kubernetes。但是,当我移到隔离区域(脱机服务器)时,无法部署kubectl映像。但是我所有的环境都运行良好,我陷入了困境。不同的只是互联网连接。
目前,我无法在离线服务器中部署kubernetes仪表板和一些图像。我的kubectl命令在离线服务器中的示例(我在在线服务器中下载了tar文件):
# docker load < nginx.tar
# kubectl create deployment test-nginx --image=nginx
# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default test-nginx-7d97ffc85d-2s4lh 0/1 ImagePullBackOff 0 50s
kube-system coredns-6955765f44-2s54f 1/1 Running 1 26h
kube-system coredns-6955765f44-wmtq9 1/1 Running 1 26h
kube-system etcd-devkubeapp01 1/1 Running 1 26h
kube-system kube-apiserver-devkubeapp01 1/1 Running 1 26h
kube-system kube-controller-manager-devkubeapp01 1/1 Running 1 26h
kube-system kube-flannel-ds-amd64-czn8z 1/1 Running 0 26h
kube-system kube-flannel-ds-amd64-d58x4 1/1 Running 0 26h
kube-system kube-flannel-ds-amd64-z9w9x 1/1 Running 0 26h
kube-system kube-proxy-9wxj2 1/1 Running 0 26h
kube-system kube-proxy-mr76b 1/1 Running 1 26h
kube-system kube-proxy-w5pvm 1/1 Running 0 26h
kube-system kube-scheduler-devkubeapp01 1/1 Running 1 26h
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
devkubeapp01 Ready master 26h v1.17.2
devkubeapp02 Ready minion1 26h v1.17.2
devkubeapp03 Ready minion2 25h v1.17.2
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 5ad3bd0e67a9 6 days ago 127MB
k8s.gcr.io/kube-proxy v1.17.2 cba2a99699bd 10 days ago 116MB
k8s.gcr.io/kube-apiserver v1.17.2 41ef50a5f06a 10 days ago 171MB
k8s.gcr.io/kube-controller-manager v1.17.2 da5fd66c4068 10 days ago 161MB
k8s.gcr.io/kube-scheduler v1.17.2 f52d4c527ef2 10 days ago 94.4MB
k8s.gcr.io/coredns 1.6.5 70f311871ae1 2 months ago 41.6MB
k8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 3 months ago 288MB
quay.io/coreos/flannel v0.11.0-amd64 ff281650a721 12 months ago 52.6MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 2 years ago 742kB
我的Pod无法正常运行,因此状态CreationContainer变为ImagePullBackOff(当我断开Internet连接时尝试在联机服务器中,状态相同=> ImagePullBackOff)。任何人都可以帮助解决这个问题?kubernetes是否支持离线环境来部署映像?
谢谢。
正如我之前的评论中所述:
我怀疑您的
imagePullPolicy
配置可能不正确。
并由您提供的日志进一步证明:
来自服务器的错误(BadRequest):容器“ test-nginx-7d97ffc85d-2s4lh”中的容器“ nginx”正在等待启动:尝试并无法提取图像
问题在于imagePullPolicy
配置。
如官方文件中所述:
预拉图像
默认情况下,kubelet将尝试从指定的注册表中提取每个图像。但是,如果
imagePullPolicy
容器的属性设置为IfNotPresent
或Never
,则将使用本地图像(分别优先或排他)。如果要依靠预拉映像代替注册表身份验证,则必须确保群集中的所有节点都具有相同的预拉映像。
因此,基本上,正如@Eduardo所提到的,您需要确保所有节点上的映像均相同,并且imagePullPolicy
已正确配置。
但是,请确保容器始终使用相同版本的映像,例如,您可以指定其摘要sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
。摘要唯一地标识了图像的特定版本,因此除非您更改摘要值,否则Kubernetes不会对其进行更新。
这样,您就可以避免将来出现问题,因为在这种情况下,保持图像群集的完全相同版本是最大的陷阱。
我希望这会有所帮助并扩展先前的答案(正确),并从一开始就证明我的观点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句