• kubernetes pod日志查看用户创建


    目录

    1.创建用户

    1.1证书创建

    1.2创建用户

    1.3允许用户登陆

    1.4切换用户

    1.5删除用户

    2.RBAC

    2.1允许user1用户查看pod日志

    3.使用用户


    1.创建用户

    1.1证书创建

    1. 进入证书目录
    2. # cd /etc/kubernetes/pki
    3. 创建key
    4. # openssl genrsa -out user1.key 2048
    5. Generating RSA private key, 2048 bit long modulus
    6. .....................................................+++
    7. ........+++
    8. e is 65537 (0x10001)
    9. 创建csr
    10. # openssl req -new -key user1.key -out user1.csr -subj "/CN=user1"
    11. 查看创建结果
    12. # ll
    13. total 72
    14. -rw-r--r-- 1 root root 1310 Jun 12 14:52 apiserver.crt
    15. -rw-r--r-- 1 root root 1155 Jun 12 14:52 apiserver-etcd-client.crt
    16. -rw------- 1 root root 1679 Jun 12 14:52 apiserver-etcd-client.key
    17. -rw------- 1 root root 1679 Jun 12 14:52 apiserver.key
    18. -rw-r--r-- 1 root root 1164 Jun 12 14:52 apiserver-kubelet-client.crt
    19. -rw------- 1 root root 1675 Jun 12 14:52 apiserver-kubelet-client.key
    20. -rw-r--r-- 1 root root 1099 Jun 12 14:52 ca.crt
    21. -rw------- 1 root root 1675 Jun 12 14:52 ca.key
    22. -rw-r--r-- 1 root root 17 Oct 10 18:07 ca.srl
    23. drwxr-xr-x 2 root root 4096 Jun 12 14:52 etcd
    24. -rw-r--r-- 1 root root 1115 Jun 12 14:52 front-proxy-ca.crt
    25. -rw------- 1 root root 1675 Jun 12 14:52 front-proxy-ca.key
    26. -rw-r--r-- 1 root root 1119 Jun 12 14:52 front-proxy-client.crt
    27. -rw------- 1 root root 1679 Jun 12 14:52 front-proxy-client.key
    28. -rw------- 1 root root 1679 Jun 12 14:52 sa.key
    29. -rw------- 1 root root 451 Jun 12 14:52 sa.pub
    30. -rw-r--r-- 1 root root 883 Oct 10 18:27 user1.csr
    31. -rw-r--r-- 1 root root 1679 Oct 10 18:26 user1.key
    32. 修改权限
    33. # chmod 600 user1.key

    使用集群证书签发

    1. # openssl x509 -req -in user1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out user1.crt -days 1095
    2. Signature ok
    3. subject=/CN=user1
    4. Getting CA Private Key

    查看签发的证书

    1. # openssl x509 -in user1.crt -text -noout
    2. Certificate:
    3. Data:
    4. Version: 1 (0x0)
    5. Serial Number:
    6. fc:aa:fd:55:13:43:c3:62
    7. Signature Algorithm: sha256WithRSAEncryption
    8. Issuer: CN=kubernetes
    9. Validity
    10. Not Before: Oct 10 10:30:34 2023 GMT
    11. Not After : Oct 9 10:30:34 2026 GMT
    12. Subject: CN=user1
    13. Subject Public Key Info:
    14. Public Key Algorithm: rsaEncryption
    15. Public-Key: (2048 bit)
    16. Modulus:
    17. 00:d8:c0:f2:4c:35:42:32:97:12:0f:c1:c2:0f:16:
    18. ........篇幅省略
    19. Exponent: 65537 (0x10001)
    20. Signature Algorithm: sha256WithRSAEncryption
    21. 8d:92:df:d1:53:cf:0c:e6:97:10:cc:53:37:16:01:0c:69:c3:
    22. ......篇幅省略

    1.2创建用户

    1. # kubectl config set-credentials user1 --client-certificate=./user1.crt --client-key=./user1.key --embed-certs=true
    2. User "user1" set.

    1.3允许用户登陆

    1. # kubectl config set-context user1@kubernetes --cluster=kubernetes --user=user1
    2. Context "user1@kubernetes" created.

    查看集群信息

    1. # kubectl config view
    2. apiVersion: v1
    3. clusters:
    4. - cluster:
    5. certificate-authority-data: DATA+OMITTED
    6. server: https://master01:6443
    7. name: kubernetes
    8. contexts:
    9. - context:
    10. cluster: kubernetes
    11. user: kubernetes-admin
    12. name: kubernetes-admin@kubernetes
    13. - context:
    14. cluster: kubernetes
    15. user: user1
    16. name: user1@kubernetes
    17. current-context: kubernetes-admin@kubernetes
    18. kind: Config
    19. preferences: {}
    20. users:
    21. - name: kubernetes-admin
    22. user:
    23. client-certificate-data: DATA+OMITTED
    24. client-key-data: DATA+OMITTED
    25. - name: user1
    26. user:
    27. client-certificate-data: DATA+OMITTED
    28. client-key-data: DATA+OMITTED

    可以看到user1已经存在并可以登陆

    1.4切换用户

    1. # kubectl config use-context user1@kubernetes
    2. Switched to context "user1@kubernetes".

     但此时用户没有任何权限,需要配置rbac

    1. # kubectl get pod
    2. Error from server (Forbidden): pods is forbidden: User "user1" cannot list resource "pods" in API group "" in the namespace "default"

    1.5删除用户

    1. # kubectl config delete-context user1@kubernetes
    2. deleted context user1@kubernetes from /root/.kube/config
    3. # kubectl config unset users.user1
    4. Property "users.user1" unset.

    2.RBAC

    2.1允许user1用户查看pod日志

    1. # cat user1_pod_get.yaml
    2. apiVersion: rbac.authorization.k8s.io/v1
    3. kind: Role
    4. metadata:
    5. namespace: default
    6. name: pod-log-reader
    7. rules:
    8. - apiGroups: [""]
    9. resources: ["pods", "pods/log"]
    10. verbs: ["get", "list"] # 允许 "user1" 用户获取和列出 Pod 以及日志
    11. ---
    12. apiVersion: rbac.authorization.k8s.io/v1
    13. kind: RoleBinding
    14. metadata:
    15. name: pod-log-reader-binding
    16. namespace: default
    17. subjects:
    18. - kind: User
    19. name: user1 # 这里的 "user1" 是您之前创建的用户名称
    20. apiGroup: rbac.authorization.k8s.io
    21. roleRef:
    22. kind: Role
    23. name: pod-log-reader
    24. apiGroup: rbac.authorization.k8s.io

    再次使用user1用户就可以查看pod和日志了

    1. # kubectl get pod -n default
    2. # kubectl logs -f pod/free-study-questionnaire-5c7f8c878d-859wl

    3.使用用户

    默认需要切换,但给开发人员或者相关人员时他们是不需要切换的,所以需要配置kubectl

    首先需要按照kubectl命令

    安装完成后有几种方式配置:

    1、拷贝创建当初创建用户的kubectl命令所在服务器下的'$HOME/.kube/config'到新kubectl命令所在服务器的'$HOME/.kube/config',然后删除admin和其他不需要的用户后即可

    2、手动编写

    需要拷贝ca.crt、user1.crt、user1.key到新kubectl服务器

    编写如下文件

    1. apiVersion: v1
    2. clusters:
    3. - cluster:
    4. certificate-authority: ca.crt
    5. server: https://master01:6443
    6. name: kubernetes
    7. contexts:
    8. - context:
    9. cluster: kubernetes
    10. user: user1
    11. name: user1@kubernetes
    12. current-context: user1@kubernetes
    13. kind: Config
    14. preferences: {}
    15. users:
    16. - name: user1
    17. user:
    18. client-certificate: user1.crt
    19. client-key: user1.key

    如果将该文件名称定义为 config, 则可以直接使用kubectl命令进行操作

    如果改名称为其他,如 user1.yaml,则使用命令需要指定文件

    kubectl --kubeconfig=$HOME/.kube/user1.yaml get pods

    当然你可以有多个yaml,放在任何目录下,就可以操作多个环境

  • 相关阅读:
    17. 电话号码的字母组合
    Ansible概述和模块解释
    【设计模式】Java设计模式 - 模板模式
    地址栏 Url 乱码问题
    当Map的值为NULL
    解决gateway跨域问题
    WSUS 修补程序管理的替代方法
    Java学习笔记5.1.1 集合 - 集合概念与分类
    配音工具大jiemi|盘点市面上那些超好用的配音神器,短视频作者看过来
    《向量数据库指南》——AI原生Milvus Cloud 中NATS 配置项详解
  • 原文地址:https://blog.csdn.net/weixin_38367535/article/details/133753576