我的 CRD 很少,但我不确定如何查询 kube-apiserver 以获取 CR 列表。任何人都可以提供任何示例代码吗?
go kubernetes kubernetes-go-client kubernetes-custom-resources kubernetes-apiserver
使用 ansible:是否可以使用 json 或 yaml 片段修补资源?我基本上希望能够完成与 , 相同的事情kubectl patch <Resource> <Name> --type='merge' -p='{"spec":{ "test":"hello }}'来附加/修改资源规范。
https://docs.ansible.com/ansible/latest/modules/k8s_module.html 是否可以使用 k8s ansible 模块来做到这一点?它说如果一个资源已经存在并且“状态:存在”被设置为它将修补它,但是据我所知它并没有修补
谢谢
我们有一个 kubernetes 集群,其中会触发协调以响应自定义事件。使用以下格式在 Golang 中实现:
type reconciler struct {}
func (reconciler) Reconcile(ctx context.Context, o reconcile.Request) (reconcile.Result, error) {
// Implement business logic of reading and writing objects here
return reconcile.Result{}, nil
}
Run Code Online (Sandbox Code Playgroud)
当自定义事件太多时,我们已经确定了协调逻辑中可能存在的瓶颈。因此,代码已更新为具有非阻塞协调逻辑。例子:
type reconciler struct {}
func (reconciler) Reconcile(ctx context.Context, o reconcile.Request) (reconcile.Result, error) {
go func() {
// Implement business logic of reading and writing objects here
}()
return reconcile.Result{}, nil
}
Run Code Online (Sandbox Code Playgroud)
然而,有些地方非阻塞 go 例程可能会返回
return ctrl.Result{Requeue: true}, nil
或
return ctrl.Result{RequeueAfter: someTime}, nil
在这种情况下,我们如何将此类事件重新排队到协调循环中,因为返回不会返回到调用者 Reconcile()
我正在尝试编写 kubernetes crd 验证架构。我有一个结构数组 (vc),这些结构中的一个字段是必需的(name字段)。
我尝试查看各种示例,但当name不存在时它不会生成错误。有什么建议有什么问题吗?
vc:
type: array
items:
type: object
properties:
name:
type: string
address:
type: string
required:
- name
Run Code Online (Sandbox Code Playgroud) 我有一个 Kubernetes自定义资源的实例,我想使用 JSON 补丁通过 Kubernetes API 对其进行修补。
这是我的 PATCH 请求:
PATCH /apis/example.com/v1alpha1/namespaces/default/mycrd/test HTTP/1.1
Accept: application/json
Content-Type: application/json-patch+json
[other headers omitted for brevity...]
[
{"op": "replace", "path": "/status/foo", value: "bar"}
]
Run Code Online (Sandbox Code Playgroud)
我相当确定我的请求正文是一个有效的JSON patch,而且我之前已经使用类似的 API 调用成功更新了核心(非 CRD)API 资源。CRD 有一个openAPIV3Schema明确允许.status.foo存在和类型的定义string。
上述请求被 Kubernetes API 服务器拒绝,响应如下:
HTTP/1.1 422 Unprocessable Entity
Conent-Type: application/json
[other headers omitted for brevity...]
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "the server rejected our request due to an …Run Code Online (Sandbox Code Playgroud) Kubernetes 中的 Kubernetes 规范大小和状态大小是否有限制?
我有一个用例,其中运算符规范是正则表达式,并且正则表达式扩展为许多我必须存储其状态的实际项目。
例子:
type RedshiftSinkSpec struct {
TopicRegexes string `json:"topicRegexes"`
}
type Topic string
type RedshiftSinkStatus struct {
// +optional
CurrentMaskStatus map[Topic]MaskStatus `json:"currentMaskStatus,omitempty"`
// +optional
DesiredMaskStatus map[Topic]MaskStatus `json:"desiredMaskStatus,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
由于主题数量是根据正则表达式计算的。我不知道对于其他人来说数据结构可以增长到多大。所以希望在某种程度上限制它。因此需要有关 Kubernetes 允许的最大限制的帮助。
此外,有必要这样做以节省 Redshift 连接数。无法真正将问题分解为一个主题的多个crd。
请建议。
design-patterns kubernetes kubernetes-custom-resources kubernetes-operator
在 Kubernetes 中,是否可以使用 CRD 的“additionalPrinterColumns”字段以分数格式(即 X/Y)显示列?
更准确地说,我想kubectl使用与下面的 READY 字段相同的格式显示 CR 字段的描述:
kubectl get statefulsets.apps <my-statefulset>
NAME READY AGE
<my-statefulset> 2/2 18m
Run Code Online (Sandbox Code Playgroud)
您能否提供“additionalPrinterColumns”部分的内容?
kubernetes kubernetes-custom-resources kubebuilder operator-sdk
您好StackOverflow用户,
我最近开始在Kubernetes领域中工作,并看到自定义资源定义(CRD)类型没有命名空间,并且可用于所有命名空间。
我想知道为什么不可能将CRD类型限定为命名空间。任何帮助,将不胜感激!
我有一个示例 crd 定义为
crd.yaml
kind: CustomResourceDefinition
metadata:
name: testconfig.demo.k8s.com
namespace: testns
spec:
group: demo.k8s.com
versions:
- name: v1
served: true
storage: true
scope: Namespaced
names:
plural: testconfigs
singular: testconfig
kind: TestConfig
Run Code Online (Sandbox Code Playgroud)
我想基于上述 crd 创建自定义资源,但我不想为资源分配固定名称,而是使用generateName 字段。所以我生成了下面的 cr.yaml。但是当我应用时,它给出错误,名称字段是强制性的
kind: TestConfig
metadata:
generateName: test-name-
namespace: testns
spec:
image: testimage
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助。
My custom definition
apiVersion: something.com/v1alpha1
kind: MyKind
metadata:
name: test
spec:
size: 1
image: myimage
Run Code Online (Sandbox Code Playgroud)
这是一个显示如何使用 JavaScript 客户端创建部署的答案。但是,我需要使用 javascript 客户端创建自定义资源
javascript node.js kubernetes kubernetes-custom-resources kubernetes-apiserver
作为示例获取架构的方法,secretproviderclasses.secrets-store.csi.x-k8s.io我将使用命令kubectl describe crd secretproviderclasses.secrets-store.csi.x-k8s.io并得到结果:
Name: secretproviderclasses.secrets-store.csi.x-k8s.io
Namespace:
Labels: <none>
Annotations: controller-gen.kubebuilder.io/version: v0.9.0
helm.sh/resource-policy: keep
API Version: apiextensions.k8s.io/v1
Kind: CustomResourceDefinition
Metadata:
Creation Timestamp: 2022-10-11T15:27:15Z
Generation: 1
Managed Fields:
API Version: apiextensions.k8s.io/v1
Fields Type: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.:
f:controller-gen.kubebuilder.io/version:
f:spec:
f:conversion:
.:
f:strategy:
f:group:
f:names:
f:kind:
f:listKind:
f:plural:
f:singular:
f:scope:
f:versions:
Manager: helm
Operation: Update
Time: 2022-10-11T15:27:15Z
API Version: apiextensions.k8s.io/v1
Fields Type: FieldsV1
fieldsV1:
f:status:
f:acceptedNames:
f:kind:
f:listKind:
f:plural:
f:singular:
f:conditions:
k:{"type":"Established"}:
.:
f:lastTransitionTime:
f:message:
f:reason:
f:status: …Run Code Online (Sandbox Code Playgroud) kubernetes ×11
kubernetes-custom-resources ×11
go ×2
operator-sdk ×2
ansible ×1
javascript ×1
kubebuilder ×1
kubectl ×1
node.js ×1
vault ×1