高可用Kubernetes集群-4. kubectl客户端工具
六.部署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客户端工具的更多相关文章
- 高可用Kubernetes集群原理介绍
■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...
- 搭建高可用kubernetes集群(keepalived+haproxy)
序 由于单master节点的kubernetes集群,存在master节点异常之后无法继续使用的缺陷.本文参考网管流程搭建一套多master节点负载均衡的kubernetes集群.官网给出了两种拓扑结 ...
- 高可用Kubernetes集群-16. ansible快速部署
说明 本文档指导采用二进制包的方式快速部署高可用kubernetes集群. 脚本托管:k8s-ansible(持续更新) 参考:高可用kubernetes集群 组件版本 组件 版本 备注 centos ...
- 高可用Kubernetes集群-3. etcd高可用集群
五.部署高可用etcd集群 etcd是key-value存储(同zookeeper),在整个kubernetes集群中处于中心数据库地位,以集群的方式部署,可有效避免单点故障. 这里采用静态配置的方式 ...
- 基于saltstack自动化部署高可用kubernetes集群
SaltStack自动化部署HA-Kubernetes 本项目在GitHub上,会不定期更新,大家也可以提交ISSUE,地址为:https://github.com/skymyyang/salt-k8 ...
- 使用Kubeadm搭建高可用Kubernetes集群
1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...
- 基于Containerd安装部署高可用Kubernetes集群
转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...
- 高可用Kubernetes集群-12. 部署kubernetes-ingress
参考文档: Github:https://github.com/kubernetes/ingress-nginx Kubernetes ingress:https://kubernetes.io/do ...
- 高可用Kubernetes集群-1. 集群环境
参考文档: 部署kubernetes集群1:https://github.com/opsnull/follow-me-install-kubernetes-cluster 部署kubernetes集群 ...
随机推荐
- ABP在领域事件中异步调用方法抛异常
在领域事件中调用UserRegistrationManager.RegisterAsync抛异常 Call UserRegistrationManager.RegisterAsync() throw ...
- Oracle中函数的使用
1.decode () 例子:它的写法如下decode('a','b','c','d'),其中a,b,c,d可以是其他函数也可以是数值,依据我们自己的情况来使用,它的含义是如果a=b,那么结果显示 ...
- Wavesurfer.js音频播放器插件的使用教程
Wavesurfer.js是一款基于HTML5 canvas和Web Audio的音频播放器插件,本文主要记录它及其视觉效果插件Regions插件的使用方法. 1.创建实例 引入插件 import W ...
- swiper一组图片,点击图片出现中间,看效果
好兄弟先看看效果是这样的么 点击哪个头像,头像移动到中间,然后放大,demo上写了五条数据 废话不多说 直接上代码 1.引入swiper.css, swiper.js 2.HTML(小弟做的是移动端的 ...
- PHP常用函数归类【持续整理】
学习了这么久PHP,基础知识总感觉不牢靠,尤其是数组,字符串函数的应用,全部手敲过次手,做出总结都是基础,在回顾一下吧. 一.PHP基础语法 变量,常量 严格区分大小写,但内置结构或关键字无所 ...
- 爬虫 Scrapy框架 爬取图虫图片并下载
items.py,根据需求确定自己的数据要求 # -*- coding: utf-8 -*- # Define here the models for your scraped items # # S ...
- 中国大学MOOC-JAVA学习(浙大翁恺)—— 时间换算
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto- ...
- [Golang学习笔记] 01 工作区和GOPATH
Go语言3个环境变量: GOROOT:GO语言按照根路径,也就是GO语言的安装路径. GOPATH:若干工作区目录的路径.是我自己定义的工作空间. GOBIN:GO程序生成的可执行文件(executa ...
- Backbone.js Basics: Bringing an App to Life with Events
http://www.sitepoint.com/backbone-basics-events/
- linux内存碎片的概念
一般在内核术语中的“碎片”都是基于物理内存而言的,我没有太看懂你得出碎片是针对地址空间这个结论的逻辑.但我认为,既然你知道了malloc是用户空间调用的,那么你所谓的碎片也是从用户空间的视角而言的,但 ...