8.第七篇 验证kube-apiserver及kubeconfig配置详解

文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483818&idx=1&sn=7572b7915ce5707e04fb8d3b556c1d4a&chksm=e9fdd45ede8a5d4834e62b30bd346555bf30e7f04e88c2bbdd0d49cabf499869ecee5952e5a5&cur_album_id=1341273083637989377&scene=189#wechat_redirect

安装完了kube-apiserver组件,但是我们并没有访问,测试是否正常,本篇我们通过kubectl命令行工具来完成测试。

kubectl是kubernetes命令行客户端,一般情况集群都开启了TLS认证,kubectl或其它客户端每次与集群kube-apiserver交互都少不了身份验证,目前有两种常用认证方式,使用证书和token,这两种方式也是最通用的方式,本节简单说下kubectl客户端如何使用证书的认证方式访问集群。

使用证书的方式,一般情况下我们需要创建一个kubeconfig配置文件,这个文件用来组织有关集群、用户、命名空间和身份认证机制的信息。kubectl使用kubeconfig配置文件来查找选择集群所需信息,并且集群kube-apiserver进行通信,kubectl默认查到${HOME}/.kube目录下面的config文件,当然也可以通过设置KUBECONFIG环境变量或者在命令行使用--kubeconfig参数指定kubeconfig配置文件。

下载kubectl客户端

#!/bin/bash
cd /data/k8s/work
wget https://dl.k8s.io/v1.17.0/kubernetes-client-linux-amd64.tar.gz
tar -zxf kubernetes-client-linux-amd64.tar.gz

# 这里只需要在中控机使用kubectl命令,只需要把它copy到/data/k8s/bin目录即可
cp kubernetes/client/bin/kubectl /data/k8s/bin/

创建kubeconfig配置文件

#!/bin/bash

cd /data/k8s/work
source /data/k8s/bin/env.sh

# 1. 集群参数配置
kubectl config set-cluster kubernetes \
  --certificate-authority=/data/k8s/work/ca.pem \
  --embed-certs=true \
  --server=${KUBE_APISERVER} \
  --kubeconfig=kubectl.kubeconfig

# 2. 客户端认证参数配置
kubectl config set-credentials admin \
  --client-certificate=/data/k8s/work/admin.pem \
  --client-key=/data/k8s/work/admin-key.pem \
  --embed-certs=true \
  --kubeconfig=kubectl.kubeconfig

# 3. 上下文参数配置
kubectl config set-context kubernetes \
  --cluster=kubernetes \
  --user=admin \
  --kubeconfig=kubectl.kubeconfig

# 4. 设置kubectl使用的哪个上下文
kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig

配置详情

使用kubeconfig配置文件

创建默认路径并把配置文件copy成config

mkdir /root/.kube/
cp kubectl.kubeconfig /root/.kube/config

查看配置

[root@calico-master-1 ~]# kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://100.66.208.10:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
[root@calico-master-1 ~]#

查看使用情况

[root@master01 ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
etcd-2               Healthy {"health":"true"}
etcd-1               Healthy {"health":"true"}
etcd-0               Healthy {"health":"true"}
[root@master01 ~]#

总结

kubeconfig配置很简单,就是先创建集群信息、再创建客户端信息、再把集群与客户联系起来,然后设置当前使用的上下文即可,理解这个过程后,就可以快速方便的创建kubeconfig配置文件,并且DevOps使用SDK进行二次开发时也会使用到此配置文件。

posted @ 2022-03-17 11:20  哈喽哈喽111111  阅读(1114)  评论(0编辑  收藏  举报