• K8S之认证、鉴权、准入控制


    前言:

    Kubernetes作为分布式的集群管理工具,API Server是集群内部各个组件通信的中介,也是外部控制的入口。需要进行安全机制的设置。Kubernetes使用了认证(Authenrtication)鉴权(Authorization)、准入控制(Admission Control)三步来保证API Server的安全

    一、认证:

    两种类型:

    1、 Kubernetes组件对API Server的访问:kubectl、Controller Manager、Scheduler、Kubelet、Kube-proxy

    2、Kubernetes管理的Pod对容器的访问:Pod(dashboard也是以pod形式运行)

    安全性说明:

    ·  Controller Manager、scheduler与API Server在同一机器,所以直接使用API Server的非安全端口访问,--insecure-bind-address=127.0.0.1

    ·  kubectl、kubelet、kube-proxy访问API Server都需要证书进行HTTPS双向认证

    证书颁发

    - 手动签发:通过k8s集群的跟ca进行签发HTTPS证书

    - 自动签发:kubelet首次访问API Server时,使用token做认证,通过后,Controller Manager会为kubelet生成一个证书,以后的访问都是使用证书做认证

    3、kubeconfig

    kubeconfig文件包含集群参数(CA证书,API Server地址),客户端参数(上面生成的证书和私钥),集群conetxt信息(集群名称、用户名)。kubernetes组件通过启动时指定不同的kubeconfig文件可以切换到不同的集群

    kubeconfig文件详解:

    1、client-key-data:客户端私钥

    2、client-certificate-data:证书

    3、kubernetes-admin:当前用户名

    4、current-context: 设置kubelet执行当前上下文,当前集群

    5、server:server服务器的地址信息

    6、contexts: 设置kubelet执行上下文

    认证流程图:

    :Kubectl config命令

    Kubeconfig文件可以手动进行编辑,也可以通过kubectl config命令进行查询和设置。
    1、kubectl config view:查看Kubeconfig文件
    2、kubectl config set-cluster: 设置kubeconfig的clusters

    kubectl config set-cluster kubernetes \
    --certificate-authority=/etc/kubernetes/ssl/ca.pem \
    --embed-certs=true \
    --server=${KUBE_APISERVER}
    

    3、kubectl config set-credentials : 设置kubeconfig的users

    kubectl config set-credentials admin \
    --client-certificate=/etc/kubernetes/ssl/admin.pem \
    --embed-certs=true \
    --client-key=/etc/kubernetes/ssl/admin-key.pem
    

    4、kubectl config set-context: 设置Kubeconfig的contexts

    kubectl config set-context kubernetes \
    --cluster=kubernetes \
    --user=admin
    

    5、kubectl config use-context: 设置Kubeconfig的current-context

    kubectl config use-context kubernetes
  • 相关阅读:
    移植nand驱动补缺:make mrproper与make clean以及make distclean,find/grep. makefile
    repo使用
    git使用总结
    notepade++使用
    linux内核源代码、配置与编译
    linux内核介绍
    块设备
    PHP和javascript中url编码解码详解
    python中的类方法、静态方法、对象方法
    webpack+vue中安装使用vue-layer弹窗插件
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/16716012.html
Copyright © 2020-2023  润新知