在启动一个Kubernetes集群时,我将etcd加上核心的Kubernetes进程--kube-proxy、kube-apiserver、kube-controller-manager、kube-scheduler--作为静态pod从私有注册表加载。过去的做法是确保为kubelet将$HOME环境变量设置为“/root”,然后使用专用docker注册表的凭据定义/root/.docker/config.json。
当尝试运行Kubernetes1.6(启用了CRI)时,我在kubelet日志中发现错误,说由于没有身份验证,它无法从我的专用docker注册表中拉出pause:3.0容器。
在kubelet命令行上设置--enable-cri=false可以工作,但是当启用CRI时,似乎不会使用/root/.docker/config文件进行身份验证。
在启用CRI的情况下运行时,是否有一些新的方法来提供加载静态POD所需的docker凭据?
在1.6中,我通过https://kubernetes.io/docs/concepts/containers/images/#specifying-ImagePullSecrets-on-a-Pod中的以下配方使其工作
$ kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
您需要将新创建的myregistrykey指定为pod规范中imagePullSecrets字段下的凭据。
apiVersion: v1
kind: Pod
metadata:
name: foo
namespace: awesomeapps
spec:
containers:
- name: foo
image: janedoe/awesomeapp:v1
imagePullSecrets:
- name: myregistrykey
Kubernetes中需要考虑三个级别的度量集合—节点、Pod和在Pod中运行的应用程序。 对于节点和应用程序指标,我有非常有效的解决方案,但我仍停留在pod指标上。 我尝试过cAdvisor和Kube状态指标,但它们都没有给我想要的东西。Kube状态指标仅提供已知的信息,例如pod CPU限制和请求。cAdvisor不会将pod标签插入容器名称,因此我无法知道哪个pod行为不端。 给定一个pod
当我启动kubelet时,我看到以下错误: 这是有意义的,因为kube-api服务器仍然没有运行。但问题是我如何让它运行起来? 我有以下舱单:
我们上节课给大家讲解了 YAML 文件的使用,也手动的创建了一个简单的 Pod,这节课开始我们就来深入的学习下我们的 Pod。在Kubernetes集群中除了我们经常使用到的普通的 Pod 外,还有一种特殊的 Pod,叫做Static Pod,就是我们说的静态 Pod,静态 Pod 有什么特殊的地方呢? 静态 Pod 直接由特定节点上的kubelet进程来管理,不通过 master 节点上的api
我正在使用Prometheus来监控我的库伯内特斯集群。我在一个单独的命名空间中设置了Prometheus。我有多个命名空间和多个pod正在运行。每个pod容器在此终端公开一个自定义指标,。我正在获取Pods CPU、内存指标等,但是如何配置Prometheus从每个可用pod中的中提取数据?我使用本教程设置了Prometheus、Link
我有3个节点在kubernetes集群。我创建了一个守护进程集,并将其部署在所有3个设备中。这个守护进程集创建了3个Pod,它们正在成功运行。但是由于某些原因,其中一个吊舱失败了。 我需要知道如何在不影响守护程序集中的其他pod的情况下重新启动这个pod,也不创建任何其他守护程序集部署? 谢啦
这里我可能错了,当我在VM上运行这个python文件时,它可以创建一个新的bucket,而不需要凭据或服务帐户。 如果我将相同的代码Dockere化到flask应用程序中,并将其部署在集群上,那么它是否仍将采用默认的google凭据?我想知道在kubernetes集群上这样做的最佳实践。