阿里云kubernetes集群自制kubeconfig

简介: 使用kubeconfig文件来组织关于集群,用户,名称空间和身份验证机制的信息。 kubectl命令行工具使用kubeconfig文件来查找选择群集并与群集的API服务器进行通信所需的信息。默认情况下 kubectl使用的配置文件名称是在$HOME/.kube目录下 config文件,可以通过设置环境变量KUBECONFIG或者--kubeconfig指定其他的配置文件 。

前提条件:

  1、创建一个阿里云kubernetes集群

  2、拥有登陆到master的ssh权限。


阿里云集群证书使用cfssl安装部署。

制作经过集群ca证书签署的客户端证书:test.crt

然后,先登陆到master上,在/etc/kubernetes/pki/目录下找到集群的ca证书:ca.crt。使用命令:openssl x509 -in /etc/kubernetes/pki/ca.crt -text -noout 获取制作签署证书的请求文件的相关配置信息

openssl x509 -in /etc/kubernetes/pki/ca.crt -text -noout

Certificate:

    Data:

        Version: 3 (0x2)

        Serial Number: 763442 (0xba632)

    Signature Algorithm: sha256WithRSAEncryption

        Issuer: C=CN, ST=ZheJiang, L=HangZhou, O=Alibaba, OU=ACS, CN=root

        Validity

            Not Before: Nov  5 09:07:00 2018 GMT

            Not After : Oct 31 09:12:25 2038 GMT

        Subject: O=xxx, OU=default, CN=xxx



签发Client Certificate:

cfssl print-defaults csr > admin-csr.json  获取模版

cat admin-csr.json 

{

    "CN": "example.net",

    "hosts": [

        "example.net",

        "www.example.net"

    ],

    "key": {

        "algo": "ecdsa",

        "size": 256

    },

    "names": [

        {

            "C": "US",

            "L": "CA",

            "ST": "San Francisco"

        }

    ]


}

修改成对应的json文件

{

    "CN": "test", #kubeconfig访问时的name,这里设置为test

    "hosts": [],

    "key": {

        "algo": "ecdsa",

        "size": 256

    },

    "names": [

        {

            "C": "CN",       #跟上面从ca.crt中获取的保持一致。

            "L": "HangZhou",

            "ST": "ZheJiang"

        }

    ]
}


生成集群签署的客户端证书
命令:cfssl gencert -ca=/etc/kubernetes/pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key -profile=kubernetes admin-csr.json | cfssljson -bare test
结果:
2018/11/08 11:38:37 [INFO] generate received request
2018/11/08 11:38:37 [INFO] received CSR
2018/11/08 11:38:37 [INFO] generating key: ecdsa-256
2018/11/08 11:38:37 [INFO] encoded CSR
2018/11/08 11:38:37 [INFO] signed certificate with serial number 304546120737391319875079966613142481233317700840
2018/11/08 11:38:37 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").
[root@iZuf6d10hr1jufgj6yy9o5Z test]# ls
admin-csr.json  test.csr  test-key.pem  test.pem

test.pem和test-key.pem就是CA授权的客户端证书
制作kubeconfig,参考文档:k8s官网 新建一个config文件,内容如下:
apiVersion: v1
kind: Config
preferences: {}

clusters:
- cluster:
  name: example

users:
- name: example

contexts:
- context:
  name: example


执行命令:
kubectl config --kubeconfig=config set-cluster test-cluster --server=https://1.2.3.4 --certificate-authority=ca.crt


kubectl config --kubeconfig=config set-credentials test --client-certificate=test.pem --client-key=test-key.pem


kubectl config --kubeconfig=config set-context test-context --cluster=test-cluster --user=test



查看config

8276712d4a85d8d62122631bb9f5a04683c15977


将kubeconfig需要的证书拷贝到自己的ecs上,放在 $HOME/.kube/目录下 。或者将证书转换成base64编码,将config中certificate-authority、client-certificate、client-key修改成certificate-authority-data、client-certificate-data、client-key-data然后配置

base64后的证书信息


44de2b8bc95e7c6cc0909daf6aa55db6b83f8078



直接访问集群结果:
#kubectl get node
Error from server (Forbidden): nodes is forbidden: User "test" cannot list nodes at the cluster scope

需要将给test用户绑定clusterrolebinding,然后再访问集群。

命令:kubectl create clusterrolebinding test-clusterrolebinding --clusterrole=cs:admin --user=test

然后再访问集群就可以了。




相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
16天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
16 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
5天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
39 17
|
18天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
14 0
|
19天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
101 0
|
26天前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
213 0
|
29天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
26 0
|
容器 Perl 监控
阿里云Kubernetes平台构建和管理实践(下)
阿里云智能容器平台解决方案架构师徐征讲解阿里云Kubernetes平台构建和管理实践,徐征主要从事帮助企业在面向云原生的应用转型的过程中提供解决方案和相应的工作。
3218 0
|
容器 Kubernetes Perl
阿里云Kubernetes平台构建和管理实践(上)
阿里云智能容器平台解决方案架构师徐征讲解阿里云Kubernetes平台构建和管理实践,徐征主要从事帮助企业在面向云原生的应用转型的过程中提供解决方案和相应的工作。
10723 0
|
2月前
|
Kubernetes Ubuntu 应用服务中间件
在Ubuntu22.04 LTS上搭建Kubernetes集群
在Ubuntu22.04.4上安装Kubernetes v1.28.7,步骤超详细
311 1
在Ubuntu22.04 LTS上搭建Kubernetes集群
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。