【Kubernetes】k8s user类型账号的config文件创建

k8s客户端工具-kubectl

介绍

kubectl 是 Kubernetes 命令行工具,用于与 Kubernetes 集群进行交互。它允许用户执行各种操作,如部署应用、管理资源、查看集群状态等 。

下载

客户端的版本最好和集群的版本一致,或者大于集群的版本,我这儿是v1.29.2版本的集群。

https://cdn.dl.k8s.io/release/v1.29.2/kubernetes-client-linux-amd64.tar.gz
  • 解压

    tar -zxvf kubernetes-client-linux-amd64.tar.gz
    
  • 验证

    进入./kubernetes/client/bin

    ./kubectl version
    

    在这里插入图片描述

    也可以把kubectl命令行工具复制到/usr/local/bin目录下(配置快捷脚本)

    在这里插入图片描述

使用

通过kubectl客户端和k8s集群进行交付时,默认回去找/root/.kube/config文件进行相关的集群认证鉴权,文章后面会有讲到这个config文件的创建。

可以通过 ./kubectl --help命令查看相关的参数信息

在这里插入图片描述

kubeconfig配置文件

kubeconfig 是 Kubernetes 集群的配置文件,用于存储与集群连接相关的信息,例如集群的地址、证书、用户名等。它是 kubectl 命令行工具和其他 Kubernetes 客户端与集群进行通信的重要配置文件 ;基于无状态协议HTTP/HTTPS的API Server需要验证每次连接请求中的用户身份,因而kube-controller-manager、kube-scheduler和kube-proxy等各类客户端组件必须能自动完成身份认证信息的提交,但通过程序选项来提供这些信息会导致敏感信息泄露。另外,管理员还面临着使用kubectl工具分别接入不同集群时的认证及认证信息映射难题。为此,Kubernetes设计了一种称为kubeconfig的配置文件,它保存有接入一到多个Kubernetes集群的相关配置信息,并允许管理员按需在各配置间灵活切换, 需要注意的是,kubeconfig 文件包含敏感信息,如证书和密码,因此应该妥善保管和保护该文件,避免将其泄露给未经授权的人员 。

kubeconfig文件结构

在这里插入图片描述

  • 集群信息

    集群信息给k8s集群创建一个集群名称用于后面给用户和命令空间绑定

  • 集群上下文

    简单理解是集群信息、用户、命令空间绑定,定义哪个用户在集群哪个命令空间下有相应的权限

  • 用户信息

    账号类型是user的需要跟api-server认证,然后配置相应的权限即可有集群资源的操作权限

X509数字证书身份凭据(user账号)
生成私钥
# umask 077; openssl genrsa -out test.key 2048
创建证书签署请求

-subj选项中CN的值将被API Server识别为用户名,O的值将被识别为用户组。

# openssl req -new -key test.key -out test.csr -subj "/CN=mason/O=devops"
签署证书请求
# openssl x509 -req -days 365 -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -in test.csr -out test.crt

注意*这里k8s集群的证书和密钥可以是ca.crt,ca.key和ca.pem,ca-key.pem

查看证书信息
# ls
mason.crt  mason.csr  mason.key
自定义kubeconfig文件
添加集群配置(cluster)
# kubectl config set-cluster devopser --embed-certs=true --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://x.x.x.x:6443" --kubeconfig=$HOME/.kube/kube-dev.config
  • –server可以通过kubectl config view命令查看集群API地址的
  • 这个命令执行后config文件已生成(kube-dev.config)
添加用户信息(user)
# kubectl config set-credentials test --embed-certs=true --client-certificate=test.crt --client-key=test.key --kubeconfig=$HOME/.kube/kube-dev.config
添加上下文信息(context)
# kubectl config set-context devopser --cluster=devopser --namespace=default --user=test --kubeconfig=$HOME/.kube/kube-dev.config
设置当前上下文
# kubectl config use-context devopser  --kubeconfig=./kube-dev.config

CURRENT   NAME        CLUSTER     AUTHINFO   NAMESPACE
*         devopser    devopser    user       default
使用上下文测试访问资源
# kubectl get ns --kubeconfig=./kube-dev.config    #注意如果授权非default命名空间记得-n
Error from server (Forbidden): namespaces "default" is forbidden: User "mason" cannot get resource "namespaces" in API group "" in the namespace "default"  #error报错是user没有集权资源的访问权限,添加role,rolebinding和cluserbinding来赋予权限
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: mason-default-rolebinding
  namespace: default
subjects:
- kind: User
  name: mason
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值