Kubernetes K8S api cloud.google.com在GKE v1.16.13-GKE.401中不可用
我试图在GKE群集v1.16.13-GKE.401上创建BackendConfig资源,但它给出了以下错误: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不可用。我如何启
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驱动程序)。