zoukankan      html  css  js  c++  java
  • k8s之serviceaccount,登录账号创建

    kubectl  --> 认证 --->授权 -->准入控制

    认证:证书 身份识别

    授权:rbac  权限检查

    准入控制:  补充授权机制 多个插件实现 只在创建 删除 修改 或做代理操作时做补充

    用户账号:

    user

    客户端 -->API server -->

    user:username,uid

    group:

    extra:

    API

    Request path 访问资源请求

    http://192.168.81.10:6443/apis/apps/v1/namespaces/default/deployments/myapp-deploy 

    kubectl api-versions

    kubectl证书

    cat .kube/config    本地有证书,可直接连接apiserver 授信了

    kubectl proxy --port=8080   在其他服务器上开启apiserver监听  通过此监听与apiserver建立连接

    curl http://localhost:8080/api/v1/namespaces 请求是通过url发给apiserver的,响应的是一个json结果

     kubectl get deploy -n kube-system

    curl http://localhost:8080/apis/apps/v1/namespaces/kube-system/deployments

    curl http://localhost:8080/apis/apps/v1/namespaces/kube-system/deployments/coredns

    所有的资源控制都是通过api请求实现的

    /apis 是总的接口

    kubectl get deploy

    curl http://localhost:8080/apis/apps/v1/namespaces/default/deployments/myapp-deploy

    Http request verb:请求动作 curl -s

     get posts put delete

    API requests verb  即kubectl命令

     get list create update patch watch proxy delete deletecollection

    Rescource:

     Subresource  Namespace   Api group

    kubectl get statefulset

    curl http://localhost:8080/apis/apps/v1/namespaces/default/statefulsets

    curl http://localhost:8080/apis/apps/v1/namespaces/default/statefulsets/myapp

    有哪些客户端需要与apiserver联系

    集群外的客户端 通过apiserver监听的节点地址kubectl proxy --port=8080

    集群中的pods 通过  kubectl get svc,   kubectl describe svc kubernetes,即通过10.96.0.1 kubernetes连接的 通过service引入到集群内部来

     pods --> service kubernetes 10.96.0.1 --> 192.168.81.10:6443 apiserver 从而pod可以直接请求apiserver服务了

    apiserver还要做认证: apiserver把自己的证书传给客户端  --> 客户端校验apiserver身份 --> apiserver校验客户端身份(pod地址为10.96.0.1)

    pod账户认证 serviceaccount  sa 服务账号

    kubectl explain pods.spec.serviceAccountName

    解释:

    kubectl describe pods myapp-deploy-55b78d8548-t4xxx

    Volumes:

      default-token-dkt94:

        Type:        Secret (a volume populated by a Secret)

        SecretName:  default-token-dkt94

    sercretName即是pod的账号或认证信息  以volumes的default-token-dkt94挂载到pods之上

    serviceAccount也是标准的k8s资源 通过serviceAccountName加载到pods上

    如何创建serviceaccount

    kubectl create serviceaccount -h

    例如:

    kubectl create serviceaccount mysa --dry-run

              创建serviceaccount账号  账号名 --dry-run:没有真正创建 生成框架

    kubectl get sa

    kubectl create serviceaccount admin

    kubectl get sa  在查询就已经创建了 系统会自动为admin生成secret信息

    kubectl describe sa admin  查询admin 的secret

    kubectl get secrets  确认secret

    kubectl describe secrets admin-token-5kqwt 这个serviceaccount只限于连接apiserver登陆认证,但干不了别的事情,需要授权

    使用自定义sa

    cp pod-demo.yaml pod-sa-demo.yaml

    vim pod-sa-demo.yaml

    apiVersion: v1

    kind: Pod

    metadata:

      name: pod-sa-demo

      namespace: default

      labels:

        app: myapp

        tier: frontend

    spec:

      containers:

      - name: myapp

        image: ikubernetes/myapp:v1

        ports:

        - name: http

          containerPort: 80

      serviceAccount: admin 定义pod使用自定义的sa账号 不定义就会自动使用default-token-dkt94

    验证

    kubectl apply -f pod-sa-demo.yaml

    kubectl describe pods pod-sa-demo

    Volumes:

      admin-token-5kqwt:

        Type:        Secret (a volume populated by a Secret)

        SecretName:  admin-token-5kqwt

    获取资源模板

    kubectl create serviceaccount mysa --dry-run -o yaml > xxxx.yaml  可获取yaml资源模板

    kubectl get pods myapp-1 -o yaml --export > xxxx.yaml 获取资源清单

    secret

    docker-registry  docker到docker私有服务认证

    generics 其他通用generics

    tls 给pod提供证书

    与镜像仓库registery认证imagePullSecrets 认证的 secret为docker-registry,也可以使用sa来登陆registry验证,sa定义在pods上

    只需要在定义pod资源清单时加上Image pull secret项

    kubectl explain pods.spec.imagePullSecrets

    kubectl create secret --help

    kubectl describe sa admin

    Image pull secrets:  <none>

    人类账号认证 useraccount

    Rbac授权

    kubectl config –help 管理kubectl配置文件的

    kubeconfig

    kubectl config view 查看有多少集群

    证书存放: /etc/kubernetes/pki/

    创建账号:

    先创建私钥

    (umask 077; openssl genrsa -out mageedu.key 2048)

      子shell          加密方式  输出key私钥 私钥大小

    结果:mageedu.key

    基于私钥去创建证书,由ca.crt签署

    先生成证书签署请求

    openssl req -new -key mageedu.key -out mageedu.csr -subj "/CN=mageedu"

                                   证书签署请求    指定名称:用户账号

    结果: mageedu.csr

    签证:用ca.crt去签

    openssl x509 -req -in mageedu.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out mageedu.crt -days 365

                 -in 指定签署请求文件 –CA指定ca签   -CAcreateserial  指定CA自己来签

                 -out 保存为证书文件  -days保存多久

    结果: mageedu.crt

    查看证书内容

    openssl x509 -in mageedu.crt -text -noout

                             文本输出

    把用户账号信息添加到去认证为连入k8s集群的信息

    kubectl config set-credentials –help

               设置认证

    kubectl config set-credentials mageedu  --client-certificate=./mageedu.crt --client-key=./mageedu.key --embed-certs=true

    mageedu  认证进入集群的认证名,与用户帐号要一样

    --client-certificate  指定crt证书

    --client-key  指定私钥

    --embed-certs 是否隐藏证书

    kubectl config view  查看已经创建集群管理员账号

    设置上下文contexts,让mageedu,也能去访问集群

    kubectl config set-context  mageedu@kubernetes --cluster=kubernetes --user=mageedu

                               上下文名称        指定的集群     指定的登录用户名

    - context:

        cluster: kubernetes 集群名

        user: mageedu  登录名

      name: clusteradmin@kubernetes  上下文名

    切换账号  等于切换context

    kubectl config use-context clusteradmin@kubernetes

    测试访问

    Kubectl get pods

    设置集群

    kubectl config set-cluster –help

    kubectl config --help

    kubectl config set-cluster mycluster --kubeconfig=/tmp/test.conf --server="https://192.168.85.110:6443" 

                        集群名     指定配置文件      指定server

    --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true

     指定CA证书                                 是否隐藏CA

    验证查看创建的集群cluster

    kubectl config view --kubeconfig=/tmp/test.conf

  • 相关阅读:
    dock 安装部署和初级管理命令
    3 gogs+jenkins 触发远程构建及tomcat管理war包替换
    2 gitlab+jenkins maven自动打包更新
    1 gitlab+jenkins 自动化部署 持续集成
    Day7 面向对象进阶
    Day 6 面向对象初级
    day4 迭代器&生成器&递归&json&正则
    day5 常用模块
    day3 函数
    day2 数据及文件操作
  • 原文地址:https://www.cnblogs.com/leiwenbin627/p/11324806.html
Copyright © 2011-2022 走看看