posts - 359,comments - 0,views - 19万

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时,需要的认证信息,包括:用户名、账号、密码等等。。

(6)Role: 一组操作权限的集合,可以指定API对象(如pod,configMap等)操作权限(read,write,patch等)

(7)RoleBinding: 将ServiceAccount对象指定相关的Role权限

(8)ClusterRoleBinding和ClusterRole:和RoleBinding,Role对象类似,只不过作用范围是整个cluster,而并非namespace.

权限控制:

将ServiceAccount绑定到一个拥有只读权限的Role.

1、创建只读权限的Role

复制代码
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: test-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
复制代码

2、绑定Role

复制代码
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: test-rolebinding
  namespace: default
subjects:
- kind: ServiceAccount
  name: default
  namespace: default
roleRef:
  kind: Role
  name: test-role
  apiGroup: rbac.authorization.k8s.io
复制代码

 

posted on   属于我的梦,明明还在  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示