• K8s API快速入门


    前言

    上一篇文章《Docker Restful API快速入门》介绍了有关Docker API的快速入门,今天这个文章给大家介绍一下K8s API的入门。

     

    下载K8s的API, k8s的API是OPENAPI的标准,可以从github.com/gohutool/docker.ui项目进行下载, 文件名k8s.swagger.json

    导入方法

    打开Postman,点击File-》Import

    如图这里就已经成功的导入了K8s的API至Postman里, 接下来,我们测试一个响应的API, 查看Pods

    执行出现错误

    [root@CENTOS-01 ~]# curl --insecure https://192.168.56.114:6443/api/v1/namespaces/ns-test/pods

     

    这个错误是由于没有输入token,K8s比docker设计的更加的完善, APIServer的调用是基于K8s的RABC的认证方式;没有token标识,是用anonymous进行访问,而k8s默认anonymous是没有开启访问权限的。 

    接下来,使用token进行访问

    建立ROOT用户,并使用TOKEN访问

    [root@CENTOS-01 ~]# kubectl create sa root
    1. [root@CENTOS-01 ~]# kubectl get sa root -o json
    2. {
    3. "apiVersion": "v1",
    4. "kind": "ServiceAccount",
    5. "metadata": {
    6. "creationTimestamp": "2022-03-24T16:59:24Z",
    7. "name": "root",
    8. "namespace": "default",
    9. "resourceVersion": "45032",
    10. "uid": "18deddf8-08b8-4f4a-bd0f-48fb9a56ea7a"
    11. },
    12. "secrets": [
    13. {
    14. "name": "root-token-bsctg"
    15. }
    16. ]
    17. }

    1. [root@CENTOS-01 ~]# kubectl describe secret root-token-bsctg
    2. Name: root-token-bsctg
    3. Namespace: default
    4. Labels:
    5. Annotations: kubernetes.io/service-account.name: root
    6. kubernetes.io/service-account.uid: 18deddf8-08b8-4f4a-bd0f-48fb9a56ea7a
    7. Type: kubernetes.io/service-account-token
    8. Data
    9. ====
    10. token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImdiS1hCWGlJemxQc3U1d2FIOGNfTUctMFNUMnR6a1lPNTBHakVrTDVYaTAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InJvb3QtdG9rZW4tYnNjdGciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoicm9vdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjE4ZGVkZGY4LTA4YjgtNGY0YS1iZDBmLTQ4ZmI5YTU2ZWE3YSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OnJvb3QifQ.i2M_aaM5QvIcFeKq_WViVzvrE8LwaOiP7F6EgmfITZJVFqg77pEns5Gx7uvQqAP2WUaFq_5kvKI5-ArWIO5pky40MyYMWOccI19HXZXlFwL9Z0_JelwMNQtoAVloVqwggm8hRjcytRhl5CDZTEUPZRs5S0EqUEytrr_C_0VCx5KDJXYlQCYdVBMWF91dLmlA92v2J3PnWZ9Kwd-ggreWGng7Orjdhjf-BXW1PdLKuicS8DLdpORA49x-BHTrGnDNZig_g3ypfRbv8Jk_TS0w_pDMq6dgEjx4hd7M6gSpAbxSeJ3eT0lLYZrgXU1obWzSy4ZgLUyIn4moELsZnsZq2A
    11. ca.crt: 1099 bytes
    12. namespace: 7 bytes

    复制TOKEN,如图中所标识的,就是root用户对应的TOKEN; 把这里TOKEN复制后,在POSTMAN进行设置。

     

    现在Token已经设置正确, 还需要给root这个用户,对应的APIServer的访问权限

    1. kubectl create clusterrolebinding apiadmin \
    2. --clusterrole cluster-admin --serviceaccount \
    3. default:root
    1. [root@CENTOS-01 ~]# kubectl describe clusterrolebinding apiadmin
    2. Name: apiadmin
    3. Labels:
    4. Annotations:
    5. Role:
    6. Kind: ClusterRole
    7. Name: cluster-admin
    8. Subjects:
    9. Kind Name Namespace
    10. ---- ---- ---------
    11. ServiceAccount root default

    权限已经成功授权。

    进行最后的测试

    1. [root@CENTOS-01 ~]# aaaa='eyJhbGciOiJSUzI1NiIsImtpZC...y4ZgLUyIn4moELsZnsZq2A'
    2. [root@CENTOS-01 ~]# curl -H "Authorization: Bearer $aaaa" \
    3. --insecure \
    4. https://192.168.56.114:6443/api/v1/namespaces/ns-test/pods

    结束语

    本文通过对K8s API和Postman的介绍; 介绍了如何通过Postman可以对K8s API进行查看和调试; 这个对K8s API的开发非常的高效, KubeUI在对K8s进行管理的功能,都是基于K8s API的调用,也都是使用这样的方法进行调试的。 非常的高效。

  • 相关阅读:
    【C/C++】结构体&内存对齐
    Python和Java有什么区别
    第九章:用Python处理省份城市编码数据
    Transformer 中 Positional Encoding 实现
    【每日一题Day45】LC1769移动所有球到每个盒子所需要的最小操作数 | 模拟 贡献
    数字孪生在工业制造中的应用领域及技术体系构建
    java中的锁
    【web-攻击用户】(9.5)同源策略:与浏览器扩展、HTML5、通过代理服务应用程序跨域
    springboot内容协商
    【问题处理】银河麒麟操作系统实例分享,服务器操作系统VNC远程问题分析
  • 原文地址:https://blog.csdn.net/inthirties/article/details/126499235