• K8S获取连接token


    1、创建一个具有管理员权限的账户

    下载或拷贝文件到主机上,vi k8s-admin.yml

    1. ---
    2. apiVersion: v1
    3. kind: ServiceAccount
    4. metadata:
    5. name: dashboard-admin
    6. namespace: kube-system
    7. ---
    8. kind: ClusterRoleBinding
    9. apiVersion: rbac.authorization.k8s.io/v1beta1
    10. metadata:
    11. name: dashboard-admin
    12. subjects:
    13. - kind: ServiceAccount
    14. name: dashboard-admin
    15. namespace: kube-system
    16. roleRef:
    17. kind: ClusterRole
    18. name: cluster-admin
    19. apiGroup: rbac.authorization.k8s.io

    # kubectl apply -f k8s-admin.yml 

    1. # kubectl apply -f k8s-admin.yaml
    2. serviceaccount/dashboard-admin created
    3. error: unable to recognize "k8s-admin.yaml": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"

    报错,将rbac.authorization.k8s.io/v1beta1修改为rbac.authorization.k8s.io/v1

    这是版本不一致的问题。修改完后,继续执行。 

    # kubectl -n kube-system get sa dashboard-admin -o yaml

    生成一个secrets.

    1. # kubectl apply -f k8s-admin.yml
    2. serviceaccount/dashboard-admin created
    3. Warning: rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
    4. clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
    5. # kubectl -n kube-system get sa dashboard-admin -o yaml
    6. apiVersion: v1
    7. kind: ServiceAccount
    8. metadata:
    9. annotations:
    10. kubectl.kubernetes.io/last-applied-configuration: |
    11. {"apiVersion":"v1","kind":"ServiceAccount","metadata":{"annotations":{},"name":"dashboard-admin","namespace":"kube-system"}}
    12. creationTimestamp: "2023-08-28T06:33:09Z"
    13. name: dashboard-admin
    14. namespace: kube-system
    15. resourceVersion: "15785"
    16. uid: 0c1b6aac-2620-43ee-93c2-1d4490ae6bdb
    17. secrets:
    18. - name: dashboard-admin-token-v2lqr

    2、获取新建账户的token

    通过获取secrets的值,得到token值

    1. # kubectl describe secret dashboard-admin-token-v2lqr -n kube-system
    2. Name: dashboard-admin-token-v2lqr
    3. Namespace: kube-system
    4. Labels:
    5. Annotations: kubernetes.io/service-account.name: dashboard-admin
    6. kubernetes.io/service-account.uid: 0c1b6aac-2620-43ee-93c2-1d4490ae6bdb
    7. Type: kubernetes.io/service-account-token
    8. Data
    9. ====
    10. ca.crt: 1066 bytes
    11. namespace: 11 bytes
    12. token: eyJhbGciOiJSUzI1NiIsImtpZCI6IndoSkNITi05Zmo4eXkxbFQ2QXd3dlI4TWNWYUNmTFhNQ3FGcDk3b0ZCSTQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tdjJscXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMGMxYjZhYWMtMjYyMC00M2VlLTkzYzItMWQ0NDkwYWU2YmRiIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.GpgsEjwlatbMLVHNmiOJ2NoNiQ7Dxmhy5w-6RsieoYqZh2OYhsZ4oIIMJv0qAYvt6Ynogm-0okrvXW6bsMaUS1vlNzlH2hrkriMZ8hTGKWLL-rAHu7A6HDGOnJwrmuicmyzTCm9v-38Sbp256X3F9dgWPYilf5CADxxXStJA7mV75R2QTcb9UauwvFU6LX4cXoOp63E7YCntAJqMPLNL4sLtKX2FhadOnqsuihzpxSKnse7feew4uFvaW4Yd2eF1dkHsg9RRs18CeUwKedNBCpA5GaFWcA09i9FPeP-Yezl4Hp5wXcdWmI9cyWuQ1Ku4XZSqM0422xujki8ns6pSMg

    获取masterurl信息,能看到具体的ip:6443端口

    1. $ kubectl describe svc kubernetes
    2. Name: kubernetes
    3. Namespace: default
    4. Labels: component=apiserver
    5. provider=kubernetes
    6. Annotations:
    7. Selector:
    8. Type: ClusterIP
    9. IP Family Policy: SingleStack
    10. IP Families: IPv4
    11. IP: 172.96.0.1
    12. IPs: 172.96.0.1
    13. Port: https 443/TCP
    14. TargetPort: 6443/TCP
    15. Endpoints: xx.xx.xx.xx:6443
    16. Session Affinity: None
    17. Events:

    编写代码测试连接

    1. package com.sk.asia.k8s.api.service;
    2. import io.fabric8.kubernetes.api.model.NamespaceList;
    3. import io.fabric8.kubernetes.client.Config;
    4. import io.fabric8.kubernetes.client.ConfigBuilder;
    5. import io.fabric8.kubernetes.client.DefaultKubernetesClient;
    6. import io.fabric8.kubernetes.client.KubernetesClient;
    7. public class ApiService {
    8. public static void main(String[] args){
    9. String base64Token = "eyJhlc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYX-----token------qwUsVtPbwQV2-mnRPK43Eond-Hu8VyoEeRnU10gNl055EC4tg";
    10. String masterUrl = "https://xx.xx.xx.xx:6443";
    11. Config config = new ConfigBuilder()
    12. .withTrustCerts(true)
    13. .withMasterUrl(masterUrl)
    14. .withOauthToken(base64Token)
    15. .build();
    16. KubernetesClient client = new DefaultKubernetesClient(config);
    17. NamespaceList namespaceList = client.namespaces().list();
    18. namespaceList.getItems()
    19. .forEach(namespace ->
    20. System.out.println(namespace.getMetadata().getName() + ":" + namespace.getStatus().getPhase()));
    21. }
    22. }

    运行结果

    1. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    2. SLF4J: Defaulting to no-operation (NOP) logger implementation
    3. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    4. default:Active
    5. kube-flannel:Active
    6. kube-node-lease:Active
    7. kube-public:Active
    8. kube-system:Active
    9. kuboard:Active
    10. Process finished with exit code 0

  • 相关阅读:
    循环队列----数据结构
    SpringBoot Servlet容器启动解析
    redis no-appendfsync-on-rewrite
    np中的normalize/histogram/cumsum/interp函数
    Docker笔记
    【LeetCode】有多少小于当前数字的数字
    springboot基础(69):Controller相关注解
    公网ip和私网ip的区别
    销售外勤自动生成日报:每天节省 20 分钟,每年节省 121小时,把更多精力放在客户开发和跟进上
    需求调研,是做好商业智能BI的第一步
  • 原文地址:https://blog.csdn.net/red_sky_blue/article/details/132540877