上下文我正在编写一个使用k8s.io/client-go的脚本库(godocshere)来操作部署。特别是,我想为集群中的每个Deployment添加一个标签选择器。部署标签选择器是immutable.所以我的方法是:为每个Deployment创建一个副本,唯一的区别是名称以“-temp”为后缀。这是为了最大限度地减少现有部署的停机时间。删除原来的部署。重新创建原始Deployment,唯一的区别是多了一个标签选择器。删除临时部署。我不能只使用client-go库按顺序执行步骤1-4,因为我只想在API服务器认为上一步已完成时继续下一步。例如,在API服务器说原始Deployments
我得到了k8s.io/client-go/1.5/...尝试运行时出错:>#k8s.io/client-go/pkg/api/v1>../k8s.io/client-go/pkg/api/v1/helpers.go:86:undefined:v1.FinalizerOrphan请问要怎么处理?../k8s.io/client-go/pkg/api/v1/helpers.go:86:varstandardFinalizers=sets.NewString(string(FinalizerKubernetes),metav1.FinalizerOrphan,)
我正在尝试创建一个kubernetes自定义资源定义(名为Block),但一直出现以下错误:Failedtolist*v1alpha1.Block:theservercouldnotfindtherequestedresource(getblocks.kubechain.com).此问题是从调用此CRD的Controller上的List引起的:indexer,controller:=cache.NewIndexerInformer(&cache.ListWatch{ListFunc:func(lometav1.ListOptions)(resultk8sruntime.Object,e
在kubernetesclient-goAPI(或使用它的其他库)中,是否有实用函数将k8s.io/apimachinery/pkg/apis/meta/v1/LabelSelector转换为用于填充k8s.io/apimachinery/pkg/apis/meta/v1/ListOptions中的字段LabelSelector的字符串?我仔细研究了client-go的代码,但找不到这样的函数。LabelSelector.Marshall()和LabelSelector.String()都没有给我这个(毫不奇怪,因为这不是他们的目的,但我还是试过了)。背景我有像k8s.io/api/e
我已经研究Kubernetes文档好几个小时了。我了解核心设计,以及服务、Controller、Pod等概念。但是,我不明白的是我可以在其中声明式配置集群的过程。也就是说,我可以编写一个配置文件(或一组)来定义云部署的构成和扩展选项。我希望能够在不运行大量cli命令的情况下声明我想要在哪些pod中使用哪些容器、它们将如何通信、它们将如何扩展等。有没有docker-composeKubernetes的功能?我希望我的应用程序在git中定义——受版本控制——而不依赖于手动cli交互。这可能以简洁的方式完成吗?有没有比官方文档更清楚的引用资料? 最佳答案
我已经研究Kubernetes文档好几个小时了。我了解核心设计,以及服务、Controller、Pod等概念。但是,我不明白的是我可以在其中声明式配置集群的过程。也就是说,我可以编写一个配置文件(或一组)来定义云部署的构成和扩展选项。我希望能够在不运行大量cli命令的情况下声明我想要在哪些pod中使用哪些容器、它们将如何通信、它们将如何扩展等。有没有docker-composeKubernetes的功能?我希望我的应用程序在git中定义——受版本控制——而不依赖于手动cli交互。这可能以简洁的方式完成吗?有没有比官方文档更清楚的引用资料? 最佳答案
如何使用kubernetesclient-goAPI获取部署/服务的当前命名空间?它似乎不在客户端对象或配置中。 最佳答案 使用ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace")工作但很丑,当所需的实现出现在inClusterClientConfig的Namespace()方法中时。但是如何从rest.InClusterConfig()开始获取该对象?它只能通过NewNonInteractiveDeferredLoadingClient
我有一个用Go编写的API,它已经被Docker化并在GKE上的Kubernetes集群中运行。目前我的API服务器不处理任何关闭场景,例如Pod死亡或被故意关闭。我应该捕获哪些UNIX信号以正常关闭服务器以及什么情况会触发它们?例如,崩溃、K8s关机等。 最佳答案 Kubernetes发送一个SIGTERM信号。所以正常关机可能看起来像这样:packagemainimport("context""log""net/http""os""os/signal""syscall")funcmain(){varsrvhttp.Serveri
当我将docker镜像部署到KubernetesEngine时,Pod无法初始化,Pod只是向https://jsonplaceholder.typicode.com/发出简单的获取请求我收到一条错误消息由未知授权机构签署的证书 最佳答案 根据您问题中的评论,我预计您会遇到一个常见问题,即Alpine基础镜像未填充ca-certificates包,该包包含许多根CA证书锚定您的信任根。将以下命令添加到您的Dockerfile以确保这些已安装在生成的镜像中:RUNapkupdate&&apkaddca-certificates&&rm
我正在寻找如何使用Go从Kubernetes集群中的pod获取日志的解决方案。我看过“https://github.com/kubernetes/client-go”和“https://godoc.org/sigs.k8s.io/controller-runtime/pkg/client”,但无法理解如何为此目的使用它们。除了日志之外,我在K8S中获取pod或任何其他对象的信息没有问题。例如,我使用“https://godoc.org/sigs.k8s.io/controller-runtime/pkg/client#example-Client--Get”中的Get()来获取K8S作