K8S获取连接token

这篇具有很好参考价值的文章主要介绍了K8S获取连接token。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard-admin
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: dashboard-admin
subjects:
  - kind: ServiceAccount
    name: dashboard-admin
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

# kubectl apply -f k8s-admin.yml 

# kubectl apply -f k8s-admin.yaml 
serviceaccount/dashboard-admin created
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.

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

2、获取新建账户的token

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

# kubectl describe secret dashboard-admin-token-v2lqr  -n kube-system
Name:         dashboard-admin-token-v2lqr
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 0c1b6aac-2620-43ee-93c2-1d4490ae6bdb

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1066 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IndoSkNITi05Zmo4eXkxbFQ2QXd3dlI4TWNWYUNmTFhNQ3FGcDk3b0ZCSTQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tdjJscXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMGMxYjZhYWMtMjYyMC00M2VlLTkzYzItMWQ0NDkwYWU2YmRiIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.GpgsEjwlatbMLVHNmiOJ2NoNiQ7Dxmhy5w-6RsieoYqZh2OYhsZ4oIIMJv0qAYvt6Ynogm-0okrvXW6bsMaUS1vlNzlH2hrkriMZ8hTGKWLL-rAHu7A6HDGOnJwrmuicmyzTCm9v-38Sbp256X3F9dgWPYilf5CADxxXStJA7mV75R2QTcb9UauwvFU6LX4cXoOp63E7YCntAJqMPLNL4sLtKX2FhadOnqsuihzpxSKnse7feew4uFvaW4Yd2eF1dkHsg9RRs18CeUwKedNBCpA5GaFWcA09i9FPeP-Yezl4Hp5wXcdWmI9cyWuQ1Ku4XZSqM0422xujki8ns6pSMg

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

$ kubectl describe svc kubernetes
Name:              kubernetes
Namespace:         default
Labels:            component=apiserver
                   provider=kubernetes
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                172.96.0.1
IPs:               172.96.0.1
Port:              https  443/TCP
TargetPort:        6443/TCP
Endpoints:         xx.xx.xx.xx:6443
Session Affinity:  None
Events:            <none>

编写代码测试连接

package com.sk.asia.k8s.api.service;


import io.fabric8.kubernetes.api.model.NamespaceList;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;

public class ApiService {
    public static void  main(String[] args){
        String base64Token = "eyJhlc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYX-----token------qwUsVtPbwQV2-mnRPK43Eond-Hu8VyoEeRnU10gNl055EC4tg";

        String masterUrl = "https://xx.xx.xx.xx:6443";
        Config config = new ConfigBuilder()
                .withTrustCerts(true)
                .withMasterUrl(masterUrl)
                .withOauthToken(base64Token)
                .build();

        KubernetesClient client = new DefaultKubernetesClient(config);
        NamespaceList namespaceList = client.namespaces().list();
        namespaceList.getItems()
                .forEach(namespace ->
                        System.out.println(namespace.getMetadata().getName() + ":" + namespace.getStatus().getPhase()));
    }
}

运行结果文章来源地址https://www.toymoban.com/news/detail-719902.html

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
default:Active
kube-flannel:Active
kube-node-lease:Active
kube-public:Active
kube-system:Active
kuboard:Active

Process finished with exit code 0

到了这里,关于K8S获取连接token的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • K8S集群Token过期处理方法以及Kubectl命令无法使用的问题解决

    使用Kubeadm方式部署的K8S集群,在初始化的时候生成的Token的有效期为1天,当过期之后Token就无法使用了,也就意味着,在Node节点执行 kubeadm join 命令加入K8S集群时就会失败,可以通过下面的方法重新生成Token。 1)创建Token

    2024年02月16日
    浏览(10)
  • k8s网络如何连接?

    k8s网络如何连接?

    在k8s中网络连接可以分为 容器与容器: 所有在pod中的容器表现为在同一个host,他们之间可以通过端口进行连接 pod与pod: 因为每个pod都有一个ip,因此pod可以通过ip进行直接连接 在不同主机上pod究竟是如何连接的呢?毕竟pod ip只是虚拟的,只能被本主机上pod访问的到,这将是本

    2024年02月10日
    浏览(12)
  • 【k8s】(九)kubernetes1.29.4离线部署之-Token过期后加入节点

    (一)kubernetes1.29.4离线部署之-安装文件准备 (二)kubernetes1.29.4离线部署之-镜像文件准备 (三)kubernetes1.29.4离线部署之-环境初始化 (四)kubernetes1.29.4离线部署之-组件安装 (五)kubernetes1.29.4离线部署之-初始化第一个控制平面 (六)kubernetes1.29.4离线部署之-加入Node节点

    2024年04月27日
    浏览(15)
  • k8s pod获取ip地址过程

    k8s pod获取ip地址过程

    在学习 Kubernetes 网络模型的过程中,了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的,以及如何帮助每个 Pod 都能获取 IP 地址。 Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址

    2024年02月08日
    浏览(11)
  • gitlab 通过变量连接自建K8S

    KUBECONFIG: /etc/deploy/config 是一个变量定义,在gitlab的ci/cd 控制台配置 ,它指定了将要创建的文件路径。这个变量的目的是为了方便在后续的阶段中使用。 在 deploy 阶段的脚本中,可以看到以下命令: 这里的目的是将 $kube_config 的值进行 Base64 解码,并将解码后的内容写入到 /

    2024年02月08日
    浏览(9)
  • 使用kubectl连接远程Kubernetes(k8s)集群

    使用kubectl连接远程Kubernetes(k8s)集群

    你需要准备一个Kubernetes集群,你要记下你安装Kubernetes的版本。如图我已经准备好了一个版本号为 v1.21.14 的集群: 注意下载的版本号最好与你安装的Kubernetes版本对应上,各个版本的下载地址(⚠️注意修改url中的版本号): Windows: x86_64: arm64: MacOS: Intel: Apple Silicon: Linux: x86

    2024年02月04日
    浏览(15)
  • k8s ingress 添加获取客户端真实ip配置

    k8s ingress 添加获取客户端真实ip配置

    本环境是一个互联网ip服务器上的nginx转发k8s集群内的ingress域名,实现所有服务通过域名访问, 默认配置下,在pod内获取客户端请求地址信息时,获取的是pod的ip和节点ip。要获取客户端ip,需要添加nginx配置中 除此之外还需要修改configmap ingress-nginx-controller ,增加如下配置

    2024年02月02日
    浏览(28)
  • k8s ingress获取客户端客户端真实IP

    k8s ingress获取客户端客户端真实IP

    在Kubernetes中,获取客户端真实IP地址是一个常见需求。这是因为在负载均衡架构中,原始请求的源IP地址会被替换成负载均衡器的IP地址。 获取客户端真实IP的需求背景包括以下几点: 安全性:基于客户端IP进行访问控制和认证授权可以提高系统安全性。 日志记录与审计:记

    2024年02月13日
    浏览(13)
  • k8s中如何修改pod中mysql的连接数

    k8s中如何修改pod中mysql的连接数

    (方法一) 临时更改设置最大连接数据(建议先临时修改,项目没有问题之后再进行永久修改) 使用Navicat连接上数据库,点击连接名——点击新建查询—— 查看最大连接数 查看当前用户使用数 show status like \\\"%connections%; 修改临时最大连接数 set global max_connections=1000; 修改临时最

    2024年02月11日
    浏览(10)
  • 聊聊部署在K8S的项目如何获取客户端真实IP

    聊聊部署在K8S的项目如何获取客户端真实IP

    最近部门有个需求,需要对一些客户端IP做白名单,在白名单范围内,才能做一些业务操作。按我们的部门的一贯做法,我们会封装一个client包,提供给业务方使用。( 注: 我们的项目是运行在K8S上)本以为这是一个不是很难的功能,部门的小伙伴不到一天,就把功能实现了

    2024年02月11日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包