六.部署kubectl客户端工具

1. 下载

[root@kubenode1 ~]# cd /usr/local/src/
[root@kubenode1 src]# wget https://storage.googleapis.com/kubernetes-release/release/v1.9.2/kubernetes-server-linux-amd64.tar.gz
[root@kubenode1 src]# tar -zxvf kubernetes-server-linux-amd64.tar.gz # kubectl等所有可执行文件在解压目录下server/bin目录下,另含kube-apiserver,kube-controller-manager,kube-scheduler,kube-proxy与kubelet等
[root@kubenode1 src]# mv /usr/local/src/kubernetes/server/bin/ /usr/local/src/kubernetes/
[root@kubenode1 src]# rm -rf /usr/local/src/kubernetes/server/
[root@kubenode1 src]# mv /usr/local/src/kubernetes/ /usr/local/

2. 创建kubectl TLS证书与私钥

1)创建kubectl证书签名请求

[root@kubenode1 ~]# cd /etc/kubernetes/admin/
[root@kubenode1 admin]# touch admin-csr.json # kube-apiserver 使用 RBAC 对客户端(如 kubelet、kube-proxy等)请求进行授权;
# kube-apiserver 预定义一部分 RBAC,含Role/ RoleBinding,ClusterRole/ ClusterRoleBinding;
# 如 ClusterRoleBinding将 Group system:masters 与 ClusterRole cluster-admin 绑定,而ClusterRole cluster-admin 拥有访问kube-apiserver 的所有权限,因此”CN”:“admin”这个用户同样拥有访问kube-apiserver 的所有权限,可作为集群超级管理员;
# O 指定该证书的 Group 为 system:masters,kubelet 使用该证书访问 kube-apiserver 时,由于证书被 CA 签名,所以认证通过,同时由于证书用户组为经过预授权的 system:masters,所以被授予访问所有 API 的权限;
# hosts 属性值为空列表,即没有ip或主机名限制
[root@kubenode1 admin]# vim admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "ChengDu",
"L": "ChengDu",
"O": "system:masters",
"OU": "cloudteam"
}
]
}

2)生成kubectl证书与私钥

[root@kubenode1 admin]# cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \
-ca-key=/etc/kubernetes/ssl/ca-key.pem \
-config=/etc/kubernetes/ssl/ca-config.json \
-profile=kubernetes admin-csr.json | cfssljson -bare admin

# 分发admin.pem,admin-key.pem
[root@kubenode1 admin]# scp admin.pem admin-key.pem root@172.30.200.22:/etc/kubernetes/admin/
[root@kubenode1 admin]# scp admin.pem admin-key.pem root@172.30.200.23:/etc/kubernetes/admin/

3. 创建kubectl kubeconfig文件

kubectl客户端工具在TLS通信时,如不配置kubeconfig文件,在访问api-server时需要指定api-server的地址以及客户端的证书等信息,比较繁琐。

# 配置集群参数;
# --server:指定api-server,采用ha之后的vip;
# cluster名自定义,设定之后需保持一致;
# --kubeconfig:指定kubeconfig文件路径与文件名;如果不设置,默认生成在~/.kube/config文件
[root@kubenode1 admin]# kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=https://172.30.200.10:6443 \
--kubeconfig=admin.conf # 配置客户端认证参数;
# 认证用户为前文签名中的“admin”;
# 指定对应的公钥证书/私钥等
[root@kubenode1 admin]# kubectl config set-credentials admin \
--client-certificate=/etc/kubernetes/admin/admin.pem \
--embed-certs=true \
--client-key=/etc/kubernetes/admin/admin-key.pem \
--kubeconfig=admin.conf # 配置上下文参数
[root@kubenode1 admin]# kubectl config set-context admin@kubernetes \
--cluster=kubernetes \
--user=admin \
--kubeconfig=admin.conf # 配置默认上下文
[root@kubenode1 admin]# kubectl config use-context admin@kubernetes --kubeconfig=admin.conf

# 分发kubeconfig文件到所有运行kubectl的客户端节点;
# kubectl 默认从 ~/.kube/config 配置文件获取访问 kube-apiserver 地址、证书、用户名等信息,分发时,路径/文件名请注意修改
[root@kubenode1 admin]# cp /etc/kubernetes/admin/admin.conf ~/.kube/config

高可用Kubernetes集群-4. kubectl客户端工具的更多相关文章

  1. 高可用Kubernetes集群原理介绍

    ■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...

  2. 搭建高可用kubernetes集群(keepalived+haproxy)

    序 由于单master节点的kubernetes集群,存在master节点异常之后无法继续使用的缺陷.本文参考网管流程搭建一套多master节点负载均衡的kubernetes集群.官网给出了两种拓扑结 ...

  3. 高可用Kubernetes集群-16. ansible快速部署

    说明 本文档指导采用二进制包的方式快速部署高可用kubernetes集群. 脚本托管:k8s-ansible(持续更新) 参考:高可用kubernetes集群 组件版本 组件 版本 备注 centos ...

  4. 高可用Kubernetes集群-3. etcd高可用集群

    五.部署高可用etcd集群 etcd是key-value存储(同zookeeper),在整个kubernetes集群中处于中心数据库地位,以集群的方式部署,可有效避免单点故障. 这里采用静态配置的方式 ...

  5. 基于saltstack自动化部署高可用kubernetes集群

    SaltStack自动化部署HA-Kubernetes 本项目在GitHub上,会不定期更新,大家也可以提交ISSUE,地址为:https://github.com/skymyyang/salt-k8 ...

  6. 使用Kubeadm搭建高可用Kubernetes集群

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  7. 基于Containerd安装部署高可用Kubernetes集群

    转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...

  8. 高可用Kubernetes集群-12. 部署kubernetes-ingress

    参考文档: Github:https://github.com/kubernetes/ingress-nginx Kubernetes ingress:https://kubernetes.io/do ...

  9. 高可用Kubernetes集群-1. 集群环境

    参考文档: 部署kubernetes集群1:https://github.com/opsnull/follow-me-install-kubernetes-cluster 部署kubernetes集群 ...

随机推荐

  1. HDU 1102(Constructing Roads)(最小生成树之prim算法)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1102 Constructing Roads Time Limit: 2000/1000 MS (Ja ...

  2. uboot 移植 要点

    1.第一 首先要  学会 shell 语法   比如 变量的 概念 变量的使用 ,if 语法  ,以及简单 IF 语法(与 或预算),以及  while for 循环 等等语法,才能看得懂 uboot ...

  3. Android 心跳呼吸动画

    废话少说,看东西 一个很简单的心跳呼吸的动画,几行代码搞定: 代码: private ImageView ivHart; //图片 AlphaAnimation alphaAnimation = nu ...

  4. Linux 不杀进程的情况下,如何释放磁盘资源

    最近项目组人员反馈一个问题:即磁盘空间满了,但是并没看到有什么文件占用空间: [root@xxxx home]# df -h Filesystem Size Used Avail Use% Mount ...

  5. iOS:通信录(完成)(18-01-18更)

    1.读取通信录 1).9.0以前:AddressBook 2).9.0以后:Contacts 2.调用通信录UI(不弄) 1).9.0以前:AddressBookUI 2).9.0以后:Contact ...

  6. 手机版的百度map封装,使用gps定位

    代码如下,包自己引 包参考 一个百度MAP导航的基础封装 使用的是浏览器调用gps定位 修改了标注的大小 效果如图: 代码...... <!DOCTYPE html> <html&g ...

  7. vue父子组件之间的传值

    引入组件 父组件 <div> <form-edit></form-edit> </div> import FormEdit from "路径& ...

  8. python 基础 切片 迭代 列表生成式

    对list 进行切片 如列表 L = ['Adam', 'Lisa', 'Bart', 'Paul'] L[0:3] ['Adam', 'Lisa', 'Bart'] L[0:3]表示,从索引0开始取 ...

  9. #leetcode刷题之路41-缺失的第一个正数

    给定一个未排序的整数数组,找出其中没有出现的最小的正整数.示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: ...

  10. Linux常用命令拾遗

    查看端口对应的程序: netstat -nlap | grep 5004 输出: tcp 0 0 192.168.3.000:5004 192.118.201.00:50800 ESTABLISHED ...