侧边栏壁纸
博主头像
问道

问道的小花园,总能给你带来惊喜

  • 累计撰写 68 篇文章
  • 累计创建 35 个标签
  • 累计收到 6 条评论

kubernetes资源对象-RBAC控制:以练促学(四)

问道
2022-08-12 / 0 评论 / 0 点赞 / 451 阅读 / 2,356 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-08-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

引子

kubernetes的资源对象是kubernetes体系中的重要组成部分,简单理解就是生成的kubernetes的系统应用,用来调度、编排我们的业务应用。是我们的业务应用与kubernetes的kube-controller组件,如:apiserver、kube-controller、kube-scheduler等之间的中间层,起到承上启下的作用。

将kubernetes的资源对象简单的分类为以下几种资源对象:

类别名称
资源对象Pod、ReplicaSet、ReplicationController、Deployment、StatefulSet、DaemonSet、Job、CronJob、HorizontalPodAutoscaling、Node、Namespace、Service、Ingress、Label、CustomResourceDefinition
存储对象Volume、PersistentVolume、Secret、ConfigMap
策略对象SecurityContext、ResourceQuota、LimitRange
身份对象ServiceAccount、Role、ClusterRole

学习kubernetes的资源对象对入门kubernetes是十分重要的,但kubernetes的资源对象比较多,概念繁杂,容易让人困惑。

单单从理论出发,也容易让人无法留下较深的印象,故本系列直接从各种小练习出发,以练促学,在实践中加深对kubernetes资源对象的理解。同时也在实践找那个插入响应的理论讲解,理论与实践相辅相成,相符促进。

关于kubernetes的简单入门,以及搭建一个简单的kubernetes集群,百度或者其他资讯平台都有很好的教程。关注作者,私信留言(kubernetes)直接赠送。

1.创建一个role,满足如下需求:

1)名字为role1。

2)此角色对pod具有get、create权限。

3)此角色对deployment具有get权限。

创建角色的yaml模板文件,然后进行修改

修改内容如下

[root@vms31 1-secure]# kubectl apply -f role1.yaml 
role.rbac.authorization.k8s.io/role1 created
[root@vms31 1-secure]# 
[root@vms31 1-secure]# 
[root@vms31 1-secure]# cat role1.yaml 
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  creationTimestamp: null
  name: role1
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
  - create
- apiGroups:
  - apps
  resources:
  - deployments
  verbs:
  - get
[root@vms31 1-secure]# kubectl get role
NAME    CREATED AT
role1   2021-09-07T02:33:48Z
[root@vms31 1-secure]# kubectl describe role role1 
Name:         role1
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources         Non-Resource URLs  Resource Names  Verbs
  ---------         -----------------  --------------  -----
  pods              []                 []              [get create]
  deployments.apps  []                 []              [get]

2 创建limitrange,满足如下要求:

1)名字为mylimit。

2)对容器进行限制。

3)最高只能消耗800M内存

官方网站,寻找模板

https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/memory-constraint-namespace/#create-a-limitrange-and-a-pod

修改模板为下面内容:

3.创建resourcequota,满足如下要求:

1)名字为myquota。
2)在命名空间里,最多只能创建6个pod、6个svc。

实验开始:

首先,官方网站复制模板 https://kubernetes.io/zh/docs/tasks/administer-cluster/manage-resources/quota-pod-namespace/

[root@vms31 1-secure]# kubectl apply -f myquota.yaml 
resourcequota/myquota created
[root@vms31 1-secure]# 
[root@vms31 1-secure]# 
[root@vms31 1-secure]# kubectl get resourcequotas 
NAME      AGE   REQUEST                    LIMIT
myquota   19s   pods: 0/6, services: 0/6   
[root@vms31 1-secure]# 
[root@vms31 1-secure]# 
[root@vms31 1-secure]# cat myquota.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: myquota
spec:
  hard:
    pods: "6"
    services: "6"


4.创建一个名字为mysa的serviceaccount

创建后会连同创建对应的secret

0

评论区