kubernetes dashboard 2.0版本安装及RBAC授权

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
访问控制,不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: kubernetes dashboard 2.0版本安装及RBAC授权

概念介绍

1.apiserver

对于k8s集群来说,apiserver是整个集群访问控制的唯一入口,那么与apiserver打交道的客户端有哪些?

我们集群内部需要运行很多pod资源,这些pod中的应用程序都需要访问apiserver:

如coredns这个容器,它需要通过apiserver获取需要创建什么资源;dashboard在浏览器可以访问,然后我们可以对里面的资源进行增删改查,创建其他pod或者命名空间,这些都需要与apiserver进行交互。用户访问kubernetes集群需要经历如下过程:身份认证->授权

接下来看下认证,授权,准入控制具体概念和相关知识。


2.认证

2.1 认证支持多种插件

(1)令牌(token)认证:

双方有一个共享密钥,服务器上先创建一个密码,存下来,客户端登陆的时候拿这个密码登陆即可,这个就是对称密钥认证方式;k8s提供了一个restful风格的接口,它的所有服务都是通过http协议提供的,因此认证信息只能经由http协议的认证首部进行传递,这种认证首部进行传递通常叫做令牌;

(2)ssl认证:

对于k8s访问来讲,ssl认证能让客户端确认服务器的认证身份,我们在跟服务器通信的时候,需要服务器发过来一个证书,我们需要确认这个证书是不是ca签署的,如果是我们认可的ca签署的,里面的subj信息与我们访问的目标主机信息保持一致,没有问题,那么我们就认为服务器的身份得到认证。了,k8s中最重要的是服务器还需要认证客户端的信息,kubectl也应该有一个证书,这个证书也是server所认可的ca签署的证书,双方需要互相认证,实现加密通信,这就是ssl认证。


2.2 kubernetes上的账号

客户端对apiserver发起请求,apiserver要识别这个用户是否有请求的权限,要识别用户本身能否通过apiserver执行相应的操作,那么需要哪些信息才能识别用户信息来完成对用户的相关的访问控制呢?

    kubectl  explain  pods.spec

    可以看到有一个字段serviceAccountName(服务账号名称),这个就是我们pod连接apiserver时使用的账号

    因此整个kubernetes集群中的账号有两类,ServiceAccount(服务账号),User account(用户账号)

    User account:

      实实在在现实中的人,人可以登陆的账号,客户端想要对apiserver发起请求,apiserver要识别这个客户端是否有请求的权限,那么不同的用户就会有不同的权限,靠用户账号表示,叫做username;

      ServiceAccount

        方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的,是kubernetes中的一种资源


        serviceaccount(sa)账号:登陆dashboad使用的账号

        user account:这个是登陆k8s物理机器的用户


        ServiceAccount

        Service account是为了方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的。它与User account不同。

        User account

        1)User account是为人设计的,而service account则是为Pod中的进程调用Kubernetes API而设计;

        2)User  account是跨namespace的,而service account则是仅局限它所在的namespace;

        3)每个namespace都会自动创建一个default service account

        4)开启ServiceAccount Admission Controller后

        每个Pod在创建后都会自动设置spec.serviceAccount为default(除非指定了其他ServiceAccout)
        验证Pod引用的service account已经存在,否则拒绝创建
        如果Pod没有指定ImagePullSecrets,则把service account的ImagePullSecrets加到Pod中

        当创建pod的时候,如果没有指定一个serviceaccount,系统会自动在与该pod相同的namespace下为其指派一个default serviceaccount。而pod和apiserver之间进行通信的账号,称为serviceAccountName。如下:

        kubectl get pods

        kubectl get pods frontend-4tbz4 -o yaml | grep "serviceAccountName


        kubectl describe pods frontend-4tbz4


        从上面可以看到每个Pod无论定义与否都会有个存储卷,这个存储卷为default-token-***的 token令牌,这就是pod和serviceaccount认证信息。通过secret进行定义,由于认证信息属于敏感信息,所以需要保存在secret资源当中,并以存储卷的方式挂载到Pod当中。从而让Pod内运行的应用通过对应的secret中的信息来连接apiserver,并完成认证。每个 namespace 中都有一个默认的叫做 default 的 serviceaccount 资源。进行查看名称空间内的secret,也可以看到对应的default-token。让当前名称空间中所有的pod在连接apiserver时可以使用的预制认证信息,从而保证pod之间的通信。

        kubectl get sa

        kubectl get sa -n  kube-system


        kubectl get secret

        kubectl get secret -n kube-system

        默认的service account 仅仅只能获取当前Pod自身的相关属性,无法观察到其他名称空间Pod的相关属性信息。如果想要扩展Pod,假设有一个Pod需要用于管理其他Pod或者是其他资源对象,是无法通过自身的名称空间的serviceaccount进行获取其他Pod的相关属性信息的,此时就需要进行手动创建一个serviceaccount,并在创建Pod时进行定义。那么serviceaccount该如何进行定义呢?实际上,service accout也属于一个k8s资源,serviceAccount也属于标准的k8s资源,可以创建一个serviceAccount,创建之后由我们创建的pod使用serviceAccountName去加载自己定义的serviceAccount就可以了。


        3.授权

        如果用户通过认证,那么什么权限都没有,需要一些后续的授权操作,如对资源的增删该查等,kubernetes1.6之后开始有RBAC(基于角色的访问控制机制)授权检查机制。Kubernetes的授权是基于插件形式的,其常用的授权插件有以下几种:

        Node(节点认证)
        ABAC(基于属性的访问控制)
        RBAC(基于角色的访问控制)
        Webhook(基于http回调机制的访问控制)

        让一个用户(Users)扮演一个角色(Role),角色拥有权限,从而让用户拥有这样的权限,随后在授权机制当中,只需要将权限授予某个角色,此时用户将获取对应角色的权限,从而实现角色的访问控制。如图:

        在k8s的授权机制当中,采用RBAC的方式进行授权,其工作逻辑是,把对对象的操作权限定义到一个角色当中,再将用户绑定到该角色,从而使用户得到对应角色的权限。如果通过rolebinding绑定role,只能对rolebingding所在的名称空间的资源有权限,上图user1这个用户绑定到role1上,只对role1这个名称空间的资源有权限,对其他名称空间资源没有权限,属于名称空间级别的;另外,k8s为此还有一种集群级别的授权机制,就是定义一个集群角色(ClusterRole),对集群内的所有资源都有可操作的权限,从而将User2通过ClusterRoleBinding到ClusterRole,从而使User2拥有集群的操作权限。Role、RoleBinding、ClusterRole和ClusterRoleBinding的关系如下图:


        通过上图可以看到,可以通过rolebinding绑定role,rolebinding绑定clusterrole,clusterrolebinding绑定clusterrole。

        上面我们说了两个角色绑定:

          (1)用户通过rolebinding绑定role
          (2)用户通过clusterrolebinding绑定clusterrole

          还有一种:rolebinding绑定clusterrole

          假如有6个名称空间,每个名称空间的用户都需要对自己的名称空间有管理员权限,那么需要定义6个role和rolebinding,然后依次绑定,如果名称空间更多,我们需要定义更多的role,这个是很麻烦的,所以我们引入clusterrole,定义一个clusterrole,对clusterrole授予所有权限,然后用户通过rolebinding绑定到clusterrole,就会拥有自己名称空间的管理员权限了

          注:RoleBinding仅仅对当前名称空间有对应的权限。


          4.准入控制

          一般而言,准入控制只是用来定义我们授权检查完成之后的后续的其他安全检查操作的,进一步补充了授权机制,由多个插件组合实行,一般而言在创建,删除,修改或者做代理时做补充;

          安装和访问kubernetes

          安装kubernetes-dashboard 2.0版本(kubernetes的web ui界面)

          把kubernetes-dashboard镜像上传到k8s集群的各个节点,按照如下方法通过docker load -i解压,镜像地址在百度网盘,可按如下链接下载:

          链接:https://pan.baidu.com/s/1_1sBTSDw1FeKCncCLLi5dA
          提取码:eel8
          链接:https://pan.baidu.com/s/1YtDQKrUuD6jH4VJ93zZcBg
          提取码:q6b8

          docker load -i dashboard_2_0_0.tar.gz

          docker load -i metrics-scrapter-1-0-1.tar.gz


          在master1节点操作

            kubectl apply -f kubernetes-dashboard.yaml

            kubernetes-dashboard.yaml文件内容在如下链接地址处复制https://raw.githubusercontent.com/luckylucky421/kubernetes1.17.3/master/kubernetes-dashboard.yaml

             

            查看dashboard是否安装成功:

              kubectl get pods -n kubernetes-dashboard

              显示如下,说明dashboard安装成功了

              NAME                                         READY   STATUS    RESTARTS   AGE  
              dashboard-metrics-scraper-694557449d-8xmtf   1/1     Running   0          60s   
              kubernetes-dashboard-5f98bdb684-ph9wg        1/1     Running   2          60s   

              查看dashboard前端的service

                kubectl get svc -n kubernetes-dashboard

                显示如下:

                NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE   
                dashboard-metrics-scraper   ClusterIP   10.100.23.9      <none>        8000/TCP   50s   
                kubernetes-dashboard        ClusterIP   10.105.253.155   <none>        443/TCP    50s 

                修改service type类型变成NodePort:

                kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

                把 type: ClusterIP变成 type: NodePort,保存退出即可

                  kubectl get svc -n kubernetes-dashboard

                  显示如下:

                  NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
                  dashboard-metrics-scraper   ClusterIP   10.100.23.9      <none>        8000/TCP        3m59s
                  kubernetes-dashboard        NodePort    10.105.253.155   <none>        443:31175/TCP   4m

                  上面可看到service类型是NodePort,访问master1节点ip:31175端口即可访问kubernetes dashboard,我的环境需要输入如下地址

                   https://192.168.0.6:31775/


                  可看到出现了dashboard界面



                  1通过yaml文件里指定的默认的token登陆dashboard


                  1)查看kubernetes-dashboard名称空间下的secret

                  kubectl get secret -n kubernetes-dashboard

                  显示如下:

                  NAME                               TYPE                                  DATA   AGE
                  default-token-vxd7t                kubernetes.io/service-account-token   3      5m27s
                  kubernetes-dashboard-certs         Opaque                                0      5m27s
                  kubernetes-dashboard-csrf          Opaque                                1      5m27s
                  kubernetes-dashboard-key-holder    Opaque                                2      5m27s
                  kubernetes-dashboard-token-ngcmg   kubernetes.io/service-account-token   3      5m27s

                  2)找到对应的带有token的kubernetes-dashboard-token-ngcmg

                  kubectl  describe  secret  kubernetes-dashboard-token-ngcmg  -n   kubernetes-dashboard

                  显示如下:

                  ...

                  ...

                  token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IjZUTVVGMDN4enFTREpqV0s3cDRWa254cTRPc2xPRTZ3bk8wcFJBSy1JSzgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1uZ2NtZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImYwMDFhNTM0LWE2ZWQtNGQ5MC1iMzdjLWMxMWU5Njk2MDE0MCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.WQFE0ygYdKkUjaQjFFU-BeWqys07J98N24R_azv6f-o9AB8Zy1bFWZcNrOlo6WYQuh-xoR8tc5ZDuLQlnZMBSwl2jo9E9FLZuEt7klTfXf4TkrQGLCxzDMD5c2nXbdDdLDtRbSwQMcQwePwp5WTAfuLyqJPFs22Xi2awpLRzbHn3ei_czNuamWUuoGHe6kP_rTnu6OUpVf1txi9C1Tg_3fM2ibNy-NWXLvrxilG3x3SbW1A3G6Y2Vbt1NxqVNtHRRQsYCvTnp3NZQqotV0-TxnvRJ3SLo_X6oxdUVnqt3DZgebyIbmg3wvgAzGmuSLlqMJ-mKQ7cNYMFR2Z8vnhhtA


                  记住token后面的值,把下面的token值复制到浏览器token登陆处即可登陆:

                  eyJhbGciOiJSUzI1NiIsImtpZCI6IjZUTVVGMDN4enFTREpqV0s3cDRWa254cTRPc2xPRTZ3bk8wcFJBSy1JSzgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1uZ2NtZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImYwMDFhNTM0LWE2ZWQtNGQ5MC1iMzdjLWMxMWU5Njk2MDE0MCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.WQFE0ygYdKkUjaQjFFU-BeWqys07J98N24R_azv6f-o9AB8Zy1bFWZcNrOlo6WYQuh-xoR8tc5ZDuLQlnZMBSwl2jo9E9FLZuEt7klTfXf4TkrQGLCxzDMD5c2nXbdDdLDtRbSwQMcQwePwp5WTAfuLyqJPFs22Xi2awpLRzbHn3ei_czNuamWUuoGHe6kP_rTnu6OUpVf1txi9C1Tg_3fM2ibNy-NWXLvrxilG3x3SbW1A3G6Y2Vbt1NxqVNtHRRQsYCvTnp3NZQqotV0-TxnvRJ3SLo_X6oxdUVnqt3DZgebyIbmg3wvgAzGmuSLlqMJ-mKQ7cNYMFR2Z8vnhhtA

                  点击sing in登陆,显示如下,默认是只能看到default名称空间内容



                  2 创建管理员token,可查看任何空间权限

                  kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard

                  1)查看kubernetes-dashboard名称空间下的secret

                  kubectl get secret -n kubernetes-dashboard

                  显示如下:

                  NAME                               TYPE                                  DATA   AGE
                  default-token-vxd7t                kubernetes.io/service-account-token   3      5m27s
                  kubernetes-dashboard-certs         Opaque                                0      5m27s
                  kubernetes-dashboard-csrf          Opaque                                1      5m27s
                  kubernetes-dashboard-key-holder    Opaque                                2      5m27s
                  kubernetes-dashboard-token-ngcmg   kubernetes.io/service-account-token   3      5m27s

                  2)找到对应的带有token的kubernetes-dashboard-token-ngcmg

                  kubectl  describe  secret  kubernetes-dashboard-token-ngcmg  -n   kubernetes-dashboard

                  显示如下:

                  ...

                  ...

                  token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IjZUTVVGMDN4enFTREpqV0s3cDRWa254cTRPc2xPRTZ3bk8wcFJBSy1JSzgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1uZ2NtZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImYwMDFhNTM0LWE2ZWQtNGQ5MC1iMzdjLWMxMWU5Njk2MDE0MCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.WQFE0ygYdKkUjaQjFFU-BeWqys07J98N24R_azv6f-o9AB8Zy1bFWZcNrOlo6WYQuh-xoR8tc5ZDuLQlnZMBSwl2jo9E9FLZuEt7klTfXf4TkrQGLCxzDMD5c2nXbdDdLDtRbSwQMcQwePwp5WTAfuLyqJPFs22Xi2awpLRzbHn3ei_czNuamWUuoGHe6kP_rTnu6OUpVf1txi9C1Tg_3fM2ibNy-NWXLvrxilG3x3SbW1A3G6Y2Vbt1NxqVNtHRRQsYCvTnp3NZQqotV0-TxnvRJ3SLo_X6oxdUVnqt3DZgebyIbmg3wvgAzGmuSLlqMJ-mKQ7cNYMFR2Z8vnhhtA


                  记住token后面的值,把下面的token值复制到浏览器token登陆处即可登陆:

                  eyJhbGciOiJSUzI1NiIsImtpZCI6IjZUTVVGMDN4enFTREpqV0s3cDRWa254cTRPc2xPRTZ3bk8wcFJBSy1JSzgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1uZ2NtZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImYwMDFhNTM0LWE2ZWQtNGQ5MC1iMzdjLWMxMWU5Njk2MDE0MCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.WQFE0ygYdKkUjaQjFFU-BeWqys07J98N24R_azv6f-o9AB8Zy1bFWZcNrOlo6WYQuh-xoR8tc5ZDuLQlnZMBSwl2jo9E9FLZuEt7klTfXf4TkrQGLCxzDMD5c2nXbdDdLDtRbSwQMcQwePwp5WTAfuLyqJPFs22Xi2awpLRzbHn3ei_czNuamWUuoGHe6kP_rTnu6OUpVf1txi9C1Tg_3fM2ibNy-NWXLvrxilG3x3SbW1A3G6Y2Vbt1NxqVNtHRRQsYCvTnp3NZQqotV0-TxnvRJ3SLo_X6oxdUVnqt3DZgebyIbmg3wvgAzGmuSLlqMJ-mKQ7cNYMFR2Z8vnhhtA

                  点击sing in登陆,显示如下,这次就可以看到和操作任何名称空间的资源了

                  dash

                  board 2.0

                  相关实践学习
                  通过Ingress进行灰度发布
                  本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
                  容器应用与集群管理
                  欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
                  相关文章
                  |
                  23天前
                  |
                  Kubernetes Linux 测试技术
                  |
                  7天前
                  |
                  Kubernetes Ubuntu Linux
                  我应该如何安装Kubernetes
                  我应该如何安装Kubernetes
                  |
                  30天前
                  |
                  Kubernetes Ubuntu Docker
                  从0开始搞K8S:使用Ubuntu进行安装(环境安装)
                  通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
                  113 1
                  |
                  1月前
                  |
                  Kubernetes Linux 开发工具
                  centos7通过kubeadm安装k8s 1.27.1版本
                  centos7通过kubeadm安装k8s 1.27.1版本
                  |
                  1月前
                  |
                  Kubernetes Docker 容器
                  rancher docker k8s安装(一)
                  rancher docker k8s安装(一)
                  40 2
                  |
                  1月前
                  |
                  Kubernetes 网络安全 容器
                  基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
                  基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
                  197 2
                  |
                  1月前
                  |
                  存储 Kubernetes 负载均衡
                  基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
                  基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
                  28 1
                  |
                  1月前
                  |
                  负载均衡 应用服务中间件 nginx
                  基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
                  基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
                  50 1
                  |
                  1月前
                  |
                  Kubernetes 监控 调度
                  k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
                  k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
                  |
                  1月前
                  |
                  缓存 Kubernetes 应用服务中间件
                  k8s学习--helm的详细解释及安装和常用命令
                  k8s学习--helm的详细解释及安装和常用命令
                  k8s学习--helm的详细解释及安装和常用命令