首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
00. 组件版本和配置策略
01. 初始化系统和全局变量
02. 创建 CA 根证书和秘钥
03. 安装和配置 kubectl
04. 部署 etcd 集群
05-1. 部署 master 节点
05-2. 部署 kube-apiserver 集群
05-3. 部署kube-controller-manager集群
05-4. 部署高可用 kube-scheduler 集群
06-1. 部署 worker 节点
06-2. apiserver 高可用
06-3. 部署 containerd 组件
06-4. 部署 kubelet 组件
06-5. 部署 kube-proxy 组件
06-6. 部署 calico 网络
07. 验证集群功能
08-1. 部署集群插件
08-2. 部署 coredns 插件
08-3. 部署 dashboard 插件
08-4. 部署 kube-prometheus 插架
08-5. 部署 EFK 插件
09. 部署 docker registry
10. 清理集群
A. 浏览器访问 kube-apiserver 安全端口
B. 校验 TLS 证书
C. 部署 metrics-server 插件
D. 部署 harbor 私有仓库
E. 部署 flannel 网络
F. 部署 docker 组件
当前位置:
首页>>
技术小册>>
部署kubernetes集群实战
小册名称:部署kubernetes集群实战
为确保安全,`kubernetes` 系统各组件需要使用 `x509` 证书对通信进行加密和认证。 CA (Certificate Authority) 是自签名的根证书,用来签名后续创建的其它证书。 CA 证书是集群所有节点共享的,**只需要创建一次**,后续用它签名其它所有证书。 本文档使用 `CloudFlare` 的 PKI 工具集 [cfssl](https://github.com/cloudflare/cfssl) 创建所有证书。 注意:如果没有特殊指明,本文档的所有操作**均在 zhangjun-k8s-01 节点上执行**。 ## 安装 cfssl 工具集 ``` bash sudo mkdir -p /opt/k8s/cert && cd /opt/k8s/work wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl_1.4.1_linux_amd64 mv cfssl_1.4.1_linux_amd64 /opt/k8s/bin/cfssl wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssljson_1.4.1_linux_amd64 mv cfssljson_1.4.1_linux_amd64 /opt/k8s/bin/cfssljson wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl-certinfo_1.4.1_linux_amd64 mv cfssl-certinfo_1.4.1_linux_amd64 /opt/k8s/bin/cfssl-certinfo chmod +x /opt/k8s/bin/* export PATH=/opt/k8s/bin:$PATH ``` ## 创建配置文件 CA 配置文件用于配置根证书的使用场景 (profile) 和具体参数 (usage,过期时间、服务端认证、客户端认证、加密等): ``` bash cd /opt/k8s/work cat > ca-config.json <<EOF { "signing": { "default": { "expiry": "87600h" }, "profiles": { "kubernetes": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "876000h" } } } } EOF ``` + `signing`:表示该证书可用于签名其它证书(生成的 `ca.pem` 证书中 `CA=TRUE`); + `server auth`:表示 client 可以用该该证书对 server 提供的证书进行验证; + `client auth`:表示 server 可以用该该证书对 client 提供的证书进行验证; + `"expiry": "876000h"`:证书有效期设置为 100 年; ## 创建证书签名请求文件 ``` bash cd /opt/k8s/work cat > ca-csr.json <<EOF { "CN": "kubernetes-ca", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "opsnull" } ], "ca": { "expiry": "876000h" } } EOF ``` + `CN:Common Name`:kube-apiserver 从证书中提取该字段作为请求的**用户名 (User Name)**,浏览器使用该字段验证网站是否合法; + `O:Organization`:kube-apiserver 从证书中提取该字段作为请求用户所属的**组 (Group)**; + kube-apiserver 将提取的 `User、Group` 作为 `RBAC` 授权的用户标识; 注意: 1. 不同证书 csr 文件的 CN、C、ST、L、O、OU 组合必须不同,否则可能出现 `PEER'S CERTIFICATE HAS AN INVALID SIGNATURE` 错误; 2. 后续创建证书的 csr 文件时,CN 都不相同(C、ST、L、O、OU 相同),以达到区分的目的; ## 生成 CA 证书和私钥 ``` bash cd /opt/k8s/work cfssl gencert -initca ca-csr.json | cfssljson -bare ca ls ca* ``` ## 分发证书文件 ``` bash cd /opt/k8s/work source /opt/k8s/bin/environment.sh for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" ssh root@${node_ip} "mkdir -p /etc/kubernetes/cert" scp ca*.pem ca-config.json root@${node_ip}:/etc/kubernetes/cert done ```
上一篇:
01. 初始化系统和全局变量
下一篇:
03. 安装和配置 kubectl
该分类下的相关小册推荐:
大规模数据处理实战
RPC实战与核心原理
云计算Linux基础训练营(上)
Linux常用服务器部署实战
分布式技术原理与算法解析
虚拟化之KVM实战
Web服务器Nginx详解
深入浅出分布式技术原理
IM即时消息技术剖析
人人都会用的宝塔Linux面板
Web安全攻防实战(下)
RocketMQ入门与实践