Kubernetes K8S api cloud.google.com在GKE v1.16.13-GKE.401中不可用

Kubernetes K8S api cloud.google.com在GKE v1.16.13-GKE.401中不可用,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我试图在GKE群集v1.16.13-GKE.401上创建BackendConfig资源,但它给出了以下错误: unable to recognize "backendconfig.yaml": no matches for kind "BackendConfig" in version "cloud.google.com/v1" 我已经用kubectl api版本命令检查了可用的api,cloud.google.com不可用。我如何启

我试图在GKE群集v1.16.13-GKE.401上创建BackendConfig资源,但它给出了以下错误:

unable to recognize "backendconfig.yaml": no matches for kind "BackendConfig" in version "cloud.google.com/v1"
我已经用
kubectl api版本
命令检查了可用的api,cloud.google.com不可用。我如何启用它

我想创建一个带有自定义运行状况检查的后端配置,如下所示:

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: my-backendconfig
spec:
  healthCheck:
    checkIntervalSec: 8
    timeoutSec: 1
    healthyThreshold: 1
    unhealthyThreshold: 3
    type: HTTP
    requestPath: /health
    port: 10257
apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/backend-config: '{"default": "my-backendconfig"}'
并将此BackendConfig连接到如下服务:

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: my-backendconfig
spec:
  healthCheck:
    checkIntervalSec: 8
    timeoutSec: 1
    healthyThreshold: 1
    unhealthyThreshold: 3
    type: HTTP
    requestPath: /health
    port: 10257
apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/backend-config: '{"default": "my-backendconfig"}'

如评论中所述,问题是由于集群中缺少
HTTP负载平衡
加载项引起的

当您使用所有默认设置创建GKE集群时,将启用类似HTTP负载平衡的功能

使用带有Kubernetes入口的Google云负载平衡器需要HTTP负载平衡插件。如果启用,将安装一个控制器,以协调对GCP项目应用负载平衡配置更改

有关更多详细信息,请参阅

对于测试,我创建了
Cluster-1
,没有
HTTP负载平衡
附加组件。没有
后端配置CRD
-

CustomResourceDefinition API资源允许您定义自定义资源。定义CRD对象将使用指定的名称和架构创建新的自定义资源。Kubernetes API服务并处理自定义资源的存储。CRD对象的名称必须是有效的DNS子域名

BackendConfig
和无
cloud
apiVersion
如下

user@cloudshell:~ (k8s-tests-XXX)$ kubectl get crd | grep backend
user@cloudshell:~ (k8s-tests-XXX)$ kubectl api-versions | grep cloud
我无法创建任何
BackendConfig

user@cloudshell:~ (k8s-tests-XXX) $ kubectl apply -f bck.yaml
error: unable to recognize "bck.yaml": no matches for kind "BackendConfig" in version "cloud.google.com/v1"
要使其正常工作,您必须启用
HTTP负载平衡
您可以通过UI或命令来实现

使用用户界面:

导航菜单>群集>[群集名称]>详细信息>Clikc on
编辑
>向下滚动至
加载项
并展开>查找
HTTP负载平衡
,并从
禁用
更改为
启用

或命令:

gcloud beta container clusters update <clustername> --update-addons=HttpLoadBalancing=ENABLED --zone=<your-zone>

$ gcloud beta container clusters update cluster-1 --update-addons=HttpLoadBalancing=ENABLED --zone=us-central1-c
WARNING: Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication

您想只创建
BackendConfig
,还是已经创建了带有批注
cloud.google.com/backend config:
的服务?你能分享你的
BackendConfig
?@PjoterS我已经编辑了我的帖子,以指定我需要实现的目标。你是否尝试将上下文更改为集群?下面的命令返回什么“kubectl config current context”?我试过你的YAML(在svc中添加端口),所有的东西都在我的新集群上正常工作。我猜
cloud.google.com/v1beta1
也不起作用。您能否共享
$kubectl get crd | grep backend
$kubectl api版本| grep cloud
的输出。您能否验证是否启用了加载项HTTP负载平衡?您是否创建了新群集或对其进行了升级?@PjoterS您提到的所有命令都不会返回输出。这是一个新的集群,它使用常规通道通过Terraform创建。所有附加组件都已禁用(应用程序管理器、HTTP负载平衡、配置连接器和计算引擎持久磁盘CSI驱动程序)。