现在我正在使用Helm来部署我的Kubernetes资源,我在这里读到...
Kubernetes类型的[Helm]安装顺序由kind_sorter.go中的枚举InstallOrder给出
在该文件中,order既没有提到ServiceInstance
也没有提到ServiceBinding
作为资源,这意味着Helm在安装了其InstallOrder列表(特别是Deployment
)之后安装这些资源类型。这似乎与helm install-dry-run-debug
run在我的图表上的输出相匹配,其中顺序指示K8S服务目录资源是最后应用的。
这只是一个时间上的小故障/幸运的巧合,还是我可以依赖的,为什么?
谢谢!
正如我发布的评论中所说:
事实上,您的部署
从一开始就失败了,状态为:CreateContainerConfigerRorr
。您的部署
是在Secret
之前从ServiceBinding
创建的。它只能在ServiceBinding
中的secret
可用时重新创建时工作。
我想通过deployment
为什么没有失败的例子来提供更多的见解。
假设:
以下指南:
templates/
目录中有一个包含以下文件的舵图:
ServiceInstance
ServiceBinding
部署
文件:
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
name: example-instance
spec:
clusterServiceClassExternalName: redis
clusterServicePlanExternalName: 5-0-4
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
name: example-binding
spec:
instanceRef:
name: example-instance
apiVersion: apps/v1
kind: Deployment
metadata:
name: ubuntu
spec:
selector:
matchLabels:
app: ubuntu
replicas: 1
template:
metadata:
labels:
app: ubuntu
spec:
containers:
- name: ubuntu
image: ubuntu
command:
- sleep
- "infinity"
# part below responsible for getting secret as env variable
env:
- name: DATA
valueFrom:
secretKeyRef:
name: example-binding
key: host
$kubectl get RESOURCE-o YAML
timestamp
$kubectl get resource-watch-only=true
如前所述,部署
中的pod
无法启动,因为当pod
尝试生成时,secret
不可用。在secret
可用后,pod
启动。
此POD
的状态如下:
| Pod | Secret |
|-------------------------------------------|-------------------------------------------|
| creationTimestamp: "2020-08-23T19:54:47Z" | - |
| - | creationTimestamp: "2020-08-23T19:54:55Z" |
| startedAt: "2020-08-23T19:55:08Z" | - |
您可以通过调用以下命令获得该时间戳:
$kubectl get pod pod_name-n namespace-o yaml
$kubectl get secret secret_name-n namespace-o yaml
您还可以通过以下方式获取其他信息:
免责声明!
上面的命令将监视资源的变化,并用操作系统的时间戳显示它们。请记住,此命令仅用于示例目的。
pod
的输出:
21:54:47:534823000 NAME READY STATUS RESTARTS AGE
21:54:47:542107000 ubuntu-65976bb789-l48wz 0/1 Pending 0 0s
21:54:47:553799000 ubuntu-65976bb789-l48wz 0/1 Pending 0 0s
21:54:47:655593000 ubuntu-65976bb789-l48wz 0/1 ContainerCreating 0 0s
-> 21:54:52:001347000 ubuntu-65976bb789-l48wz 0/1 CreateContainerConfigError 0 4s
21:55:09:205265000 ubuntu-65976bb789-l48wz 1/1 Running 0 22s
21:54:47:385714000 NAME TYPE DATA AGE
21:54:47:393145000 sh.helm.release.v1.example.v1 helm.sh/release.v1 1 0s
21:54:47:719864000 sh.helm.release.v1.example.v1 helm.sh/release.v1 1 0s
21:54:51:182609000 understood-squid-redis Opaque 1 0s
21:54:52:001031000 understood-squid-redis Opaque 1 0s
-> 21:54:55:686461000 example-binding Opaque 6 0s
我正试图将我的应用程序部署到运行在谷歌容器引擎中的Kubernetes。 该应用程序可以在https://github.com/industrial/docker-znc找到。 null
在保持云不可知的情况下创建一些通用组件来部署入口是否重要? 其他公司如何将它们的入口资源部署到k8s集群?
我在Google Container Engine上部署了一个容器,它运行良好。现在,我想公开它。 这个应用程序是一个侦听2个端口的服务。使用kubectl公开部署,我创建了2个负载均衡器,每个端口一个。 我制作了两个负载平衡器,因为kubectl expose命令似乎不允许使用多个端口。虽然我在kubectl上将其定义为type=LoadBalancer,但一旦在GKE上创建了它们,它们就被定义
本质上,我想为每个包含一个或多个子域的服务设置一个入口,所有这些入口都指向同一个集群。现在,我通过每个入口获得不同的临时IP。我可以创建一些转发规则,将所有流量指向静态IP转到集群,然后可能创建一个通配符DNS条目,将所有子域指向静态IP吗? 这是一个类似于我正在使用的示例配置: 我在kube集群上创建这些资源,如下所示: 然后查看这样创建的入口: 现在,假设您复制了上面的yaml,并将服务、部署
我是K8s的新手,所以仍然试图让我的头脑周围的事情。我一直在研究部署,并能够理解它们将有多有用。但是,我不明白为什么它们不支持服务(只支持副本集和豆荚)。