首页 > 其他分享 >k8s yaml文件快速阅读理解

k8s yaml文件快速阅读理解

时间:2023-01-03 13:44:51浏览次数:36  
标签:文件 k8s Service 端口 yaml 3306 Endpoints 链接

apiVersion:此处值是v1,这个版本号需要根据安装的Kubernetes版本和资源类型进行变化,记住不是写死的。
kind:此处创建的是Pod,根据实际情况,此处资源类型可以是Deployment、Job、Ingress、Service等。
metadata:包含Pod的一些meta信息,比如名称、namespace、标签等信息。
spec:包括一些container,storage,volume以及其他Kubernetes需要的参数,以及诸如是否在容器失败时重新启动容器的属性。可在特定Kubernetes API找到完整的Kubernetes Pod的属性。

kubectl api-versions  #查看apiVersion

常见的kind类型:

(1)Endpoints:Endpoints可以把外部的链接到k8s系统中(可以理解为引用外部资源,如将一个外部mysql连接到k8s中)

apiVersion: v1
kind: Endpoints
metadata:
  name: suncat-endpoints
subsets:
  - addresses: # 代理ip
      - ip: 192.168.14.144
    ports:
      - port: 3306 # 服务的端口
        protocol: TCP
        name: http
 
---
 
apiVersion: v1
kind: Service
metadata:
  name: suncat-endpoints # 这里的名称要和上面一样才能关联
spec:
  ports:
    - port: 3306
      targetPort: 3306
      protocol: TCP
      name: http

(1)首先我们看到,我们定义了名为suncat-endpoints的Endpoints,同时往suncat-endpoints配置了代理IP以及服务的端口。

(2)接着我们看下一个,以---分隔符隔开的另一个类型Service,定义了一个名为suncat-endpoints的Service,同时往该Service中配置内部端口映射到Pod暴露出的端口port: 3306,以及对外暴露的端口号targetPort: 3306

总结:通过配置Endpoints以及Service,Endpoints将k8s的端口链接到外部mysql端口,而Service将k8s中内部的端口映射到k8s端口,以此就完成了pod应用访问外部链接。

(2)Service:部署一个内部虚拟IP,其他deployment可以链接。(可以简单理解为K8S的端口映射,如外部3444端口映射到pod应用中80端口)

(3)Secrets:用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。(可以理解为ssh中的密钥)

(4)Deployment:部署一个Pod,内部只能链接service,无法互相链接。(可以简单理解为一个pod应用的部署工具,即使部署的应用挂了还能重启,但只能链接service服务

  (5)  Serviceaccount: 服务账号,它是指pod中一种应用程序运行托管在k8s集群上,想访问k8s集群上的apiserver时,需要的认证信息,包括:用户名、账号、密码等等。。

标签:文件,k8s,Service,端口,yaml,3306,Endpoints,链接
From: https://www.cnblogs.com/libruce/p/17021832.html

相关文章