当前位置: 首页 > 知识库问答 >
问题:

为什么“kubectl get”的YAML与GKE中“kubectl apply”的YAML如此不同?

呼延俊风
2023-03-14

我有一个GKE集群

我使用kubectl apply从本地机器应用以下YAML:

apiVersion: v1
kind: Service
metadata:
  name: flask-app-svc
  namespace: myapp
spec:
  ports:
  - port: 5000
    targetPort: 5000
  selector:
    component: flask-app

申请了。很好。✅

然后我用kubectl get service从集群中获取YAML,它返回了这个:

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/neg: '{"ingress":true}'
    cloud.google.com/neg-status: '{"network_endpoint_groups":{"5000":"k8s1-5fe0c3c1-myapp-flask-app-svc-5000-837dba94"},"zones":["asia-southeast1-a"]}'
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"flask-app-svc","namespace":"myapp"},"spec":{"ports":[{"port":5000,"targetPort":5000}],"selector":{"component":"flask-app"}}}
  creationTimestamp: "2021-10-29T14:40:49Z"
  name: flask-app-svc
  namespace: myapp
  resourceVersion: "242820340"
  uid: ad80f634-5aab-4147-8f71-11ccc44fd867
spec:
  clusterIP: 10.22.52.180
  clusterIPs:
  - 10.22.52.180
  ports:
  - port: 5000
    protocol: TCP
    targetPort: 5000
  selector:
    component: flask-app
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

提前谢谢你。

我一直在想这件事。感谢您在这里提供的建议和建议。

共有2个答案

张晔
2023-03-14

GKE中的服务是向预期的最终用户公开的一种方式,这些应用程序运行在一组pod中。所有这些元素构成GKE簇的一部分。如果您应用YAML来包装一个服务,那么为了让您的用户能够访问应用程序,还需要做一些额外的工作。kubernetes和GKE的功能之一是自动创建、设置和维护创建服务所需的资源。GKE所做的所有额外设置和定义都记录在YAML文件中。

如果您可以了解更多关于这个概念的信息,您可以从Google Kubernetes引擎产品页面开始,或者在同一页面上查阅GKE文档。另一个好的开始是阅读GKE概述。

侯向文
2023-03-14

Kubernetes API服务器为API对象(包括POD、服务、复制控制器等)验证和配置数据。API服务器为REST操作提供服务,并为集群的共享状态提供前端,所有其他组件通过该状态进行交互。API服务器使用用户提供的定义来创建创建所需对象所需的所有详细定义。在本文档中,您可以找到GKE API服务器引擎的概述。

您可以在本文档中找到有关创建操作的示例。在那里,您可以在请求输入和为API服务器生成的响应之间切换,以创建所需对象、其参数、元数据以及在原始yaml文件的“扩展”版本中看到的所有相关配置参数的完整定义。在同一文档中,您可以找到有关此主题的其他信息。

 类似资料:
  • YAML是JSON的一个超集,可以非常方便地将外部配置以层次结构形式存储起来。YAML可以作为properties配置文件的替代。 YAML使用的注意事项: 在properties文件中是以"."进行分割的,在yml中是用"."进行分割的; yml的数据格式和json的格式很像,都是K-V格式,并且通过":"进行赋值; 每个冒号后面一定要加一个空格;

  • 我正在尝试将以下YAML数据分解为Go结构。 数据采用以下格式: 根据类型字段,我想确定是否将配置字段解组到awsConfig或kubernetesConfig结构中。 我当前的代码如下(使用“gopkg.in/yaml.v2”): 操场代码:https://go.dev/play/p/klxOoHMCtnG 目前它被解组为 map[接口 {}]接口 {},无法转换为上述结构之一。错误:panic

  • 本文向大家介绍yaml 基本的YAML类型,包括了yaml 基本的YAML类型的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我想在我的yaml文件中定义一个映射以在yaml文件中使用。 注意:我们对 yaml 有一个预处理步骤,它基本上允许我们插入可替换的令牌。我想使用替换令牌的值作为我的密钥...这就是为什么我不知道在我写yaml时我想要什么价值,只是FYI 所以简而言之,我想做的是这样的事情 或 或 我期望的结果是 然而使用https://yaml-online-parser.appspot.com/ 我可以看到这

  • 我正试图为Rails项目的国际化编写一本YAML词典。但是我有点困惑,因为在一些文件中我看到了双引号中的字符串,而在一些文件中没有双引号。需要考虑的几点: null 通常不需要引号; 如果要转义字符,请使用双引号; 使用带有单引号的时...?!?