zoukankan      html  css  js  c++  java
  • K8s概念2

    一、再次强调:api-server启动时,会自东创建kubernets服务,集群名称默认kubernetes

    授权kube-apiserver访问kubelet API的权限

    在执行kubectl命令时,apiserver会将请求转发到kubelet的https端口。

    这里定义的RBAC规则,授权apiserver使用的证书(kubernetes.pem)用户名(CN:kubernetes)访问kubelet API的权限

    kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrole=system:kubelet-api-admin --user kubernetes

    创建一个授权绑定,名称是kube-apiserver:kubelet-apis ,给于用户kubernetes,系统预置角色system:kubelet-api-admin,这样apiserver就具备了访问
    kubelet-api的能力

    权限分析:

    kubectl按照.kube/config----内嵌证书属于system:masters组,访问api-server的无限API的权限.
    但是api-server访问kubelet的证书用户kubernetes,目前没有访问kubelet-api的权限,需要利用api-server授权的授权API进行授权。
    预定义的ClusterRoleBinding cluster-admin
    将Group system:masters与Role cluster-admin绑定,该Role授予访问api-server的无限API的权限
    二、控制管理器( 多节点部署,选举)
    负责和api-server打交道,管理多个独立的控制器,每个控制器有不同的功能。

    证书:"CN": "system:kube-controller-manager", O- "system:kube-controller-manager",默认内置权限

    比如自东扩展....

    默认控制管理器启动时,证书身份所属组,具备内置---ClusteRole system:kube-controller-manager,权限太小
    启动时配置:–use-service-account-credentials=true,
    main controller 会为各 controller 创建对应的 ServiceAccount XXX-controller。
    内置的 ClusterRoleBinding system:controller:XXX 将赋予各 XXX-controller ServiceAccount (自东创建服务账户)
    对应的 ClusterRole system:controller:XXX 权限

    kubectl get clusterrole|grep controller
    kubectl describe clusterrole system:controller:deployment-controller
    kubectl get endpoints kube-controller-manager --namespace=kube-system  -o yaml

    二、kublet--负责接受api-server的调用,创建容器等操作(还提供工作节点度量信息服务)
     
    1、需要创建bootstrape-token,----需要配置文件,初次启动,需要向api-server进行注册,由控制管理器,进行自动发放证书

    export BOOTSTRAP_TOKEN=$(kubeadm token create 
          --description kubelet-bootstrap-token 
          --groups system:bootstrappers:${node_name} 
          --kubeconfig ~/.kube/config)
        # 设置集群参数
        kubectl config set-cluster kubernetes 
          --certificate-authority=/etc/kubernetes/cert/ca.pem 
          --embed-certs=true 
          --server=${KUBE_APISERVER} 
          --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig
        # 设置客户端认证参数
        kubectl config set-credentials kubelet-bootstrap 
          --token=${BOOTSTRAP_TOKEN} 
          --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig
        # 设置上下文参数
        kubectl config set-context default 
          --cluster=kubernetes 
          --user=kubelet-bootstrap 
          --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig
        # 设置默认上下文
        kubectl config use-context default --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig
    

     分发到各个节点的

    kubelet-bootstrap-${node_name}.kubeconfig ===》改变文件名字 /etc/kubernetes/kubelet-bootstrap.kubeconfig
    kube-apiserver接收kubelet的bootstrap token后,将请求的user设置为system:bootstrap; group设置为system:bootstrappers,

    后续将为这个group设置ClusterRoleBinding

    ------授权

    创建user和group的CSR权限,不创建kubelet会启动失败

    $ kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --group=system:bootstrappers

    --配置启动
    kublet需要理解dns域,域名服务--配置文件中配置

    authroization.mode=Webhook:kubelet 使用 SubjectAccessReview API 查询 kube-apiserver 某 user、group 是否具有操作资源的权限(RBAC);

    --自动发放证书和手动批准

    参考文档--







  • 相关阅读:
    这些年,产品经理们折腾过的原型工具
    这些年,产品经理们折腾过的原型工具
    这些年,产品经理们折腾过的原型工具
    区块链与微服务天生是一对
    区块链与微服务天生是一对
    区块链与微服务天生是一对
    区块链与微服务天生是一对
    OpenCV和Matlab
    OpenCV和Matlab
    现在最暴利的行业是什么?
  • 原文地址:https://www.cnblogs.com/justart/p/13198841.html
Copyright © 2011-2022 走看看