六.部署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. 结合cocos2d-x开发配置sublime text

    开发cocos2d-x前端的非核心开发人员对于编辑器的选择,多数的选择有两个,一个是传统的ultraedit,另外的就是现在很流行的sublime text.以前我是比较喜欢用ultraedit的,但 ...

  2. VS Code 常用插件列表

    插件列表 Auto Close Tag 自动闭合HTML标签 Auto Rename Tag 修改HTML标签时,自动修改匹配的标签 Bookmarks 添加行书签 Can I Use HTML5.C ...

  3. java String详解

    创建字符串: 1. String(char a[]) char a[] = {'g','o','o','d'}; String str = new String(a); 2. String(char ...

  4. Linux系统初学-第三课 Linux网络配置1

    Linux系统初学-第三课 Linux网络配置 1.动态IP配置 配置文件路径 /etc/sysconfig/network-scripts/ ls查看网卡eth0,其中HWADDR值得获取:ifco ...

  5. 关于IScroll使用中的常见问题与解决方案

    1.在iscroll4的滚动容器范围内,点击input框.select等表单元素时没有响应这个问题原因在于iscroll需要一直监听用户的touch操作,以便灵敏的做出对应效果,所以它把其余的默认事件 ...

  6. 100-Days-Of-ML-Code 评注版(Day 3)

    Day3_Multiple_Linear_Regression(多元线性回归) 本文引用自 Multiple_Linear_Regression, 对其中内容进行了评注与补充说明. 回归分析是一种预测 ...

  7. Linux Mint 使用 VNC Server (x11vnc) 进行远程屏幕

    https://community.linuxmint.com/tutorial/view/2334 This tutorial was adapted from here. Remove the d ...

  8. python 内置调试工具 pdb

    除了 pycharm 可以调试python外,python自带的内置工具pdb 也可以调试 python.其命令方式类似于 gdb. pdb 常用的调试命令见下表. 命令 解释 break 或 b 设 ...

  9. 自定义对象存入Redis

    package com.cms.common; import com.alibaba.fastjson.JSON; import com.qiyi.tvguo.cms.common.utils.Obj ...

  10. 20155212——man指令的使用及mypwd的实现

    man指令的使用及mypwd的实现 man指令的使用 一.man -k的k参数以及代表的意思 代号 代表內容 1 使用者在shell中可以操作的指令或可执行档 2 系統核心可呼叫的函数与工具等 3 一 ...