内容简介:san 同学不经意的一扫,就看到了上一篇中的两个错误:近期俗务缠身,第二章的二进制部分又有较多需要更新的内容,因此拖延的比较厉害,见谅见谅。二进制部署这部分和现状的主要差别是:
校对的错误
san 同学不经意的一扫,就看到了上一篇中的两个错误:
-
Kubeadm 文档中虽然没提到对 CPU 的检测,实际上单核虚拟机运行是会被 preflight 拒绝的。
-
preflight 步骤中的:
sockert
应为socket
。
书接前回
近期俗务缠身,第二章的二进制部分又有较多需要更新的内容,因此拖延的比较厉害,见谅见谅。
二进制部署这部分和现状的主要差别是:
-
https 已经是标配,而书中用分离的方式来讲述证书部分,显得强调不足。
-
Kubernetes 的二进制文件下载方式发生了一些变化。
-
etcd 的配置和验证方法也要更新。
关于 ca 证书
出于安全方面的考虑,Kubernetes 各组件之间的通信都要求使用 https 通信来完成,这就要求我们要为参与通信的各种组件提供证书来支持 https 通信。一般来说,因为都是内部通信,会采用自签署的根证书来签发其它所有证书。统一的根证书有利于建立信任关系,操作也更加方便,因此这里使用单一 CA 的方案。
生成自签署根证书很容易:
# openssl genrsa -out ca.key 2048 Generating RSA private key, 2048 bit long modulus ...+++ ........................................................................................................................... .....................................+++ e is 65537 (0x10001) # openssl req -subj "/CN=Kubernetes CA" -new -x509 -days 3650 -key ca.key -out ca.crt
这里需要注意的是 -days
参数,这个参数代表的是 ca 的有效期,后续的内容中也会看到这个参数,建议读者认真对待这个参数,防止后面的使用过程中,因为证书失效造成不必要的损失。把新生成的证书和密钥保存到 /etc/kubernetes/pki/
,后面我们将会使用这个 ca 签署其它的证书。自签发的 ca 证书应该加入到集群中所有节点的信任列表之中,以保证该 ca 签发的证书能够得到所有节点的信任。例如在 CentOS 7 中需要使用如下命令:
# cp ca.crt /etc/pki/ca-trust/source/anchors/ # update-ca-trust
etcd服务
etcd 是 Kubernetes 集群的主数据库,需要在安装 Kubernetes 各服务之前完成安装和启动。
从官方 GitHub 可以找到 etcd 的发行包,下载解压之后,将 etcd 和 etcdctl 文件复制到 /usr/bin
目录。
为 etcd 编写 systemd 服务配置文件( /usr/lib/systemd/system/etcd.service
):
[Unit] Description=Etcd Server After=network.target [Service] Type=notify ExecStart=/usr/bin/etcd \ --data-dir=/var/lib/etcd \ --client-cert-auth=false \ --cert-file=/etc/kubernetes/pki/etcd-server.crt \ --key-file=/etc/kubernetes/pki/etcd-server.key \ --trusted-ca-file=/etc/kubernetes/pki/ca.crt \ --listen-client-urls=https://127.0.0.1:2379,https://10.211.55.33:2379 \ --advertise-client-urls=https://10.211.55.33:2379 \ --name=kubguide1 Restart=always RestartSec=10s LimitNOFILE=40000 [Install] WantedBy=multi-user.target
--data-dir
参数指定了 etcd 的数据存储路径。在实际环境中需要注意:etcd 承担了整个集群的核心存储工作,因此对所在磁盘的性能是有较高需求的。
--listen-client-urls
定义了 etcd 服务器的监听地址。
--cert-file
、 --key-file
以及 --trusted-ca-file
三个参数的组合形成了一个 ca 到证书的信任链:不论是 etcd 自身还是和 etcd 进行通信的kube-apiserver,都强烈建议使用 https 进行通信,因此上面的命令行中设置了一组证书。
在启动之前,要使用前面的 ca 文件签发一个 etcd 服务器的证书。
为证书编写一个配置文件 etcd-server.cnf
:
[req] req_extensions = v3_req distinguished_name = req_distinguished_name [req_distinguished_name] [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = localhost IP.1 = 10.211.55.33 IP.2 = 127.0.0.1
文件中的 DNS 和 IP 字段应该覆盖 etcd 服务器的所有监听地址。
生成证书密钥:
# openssl genrsa -out etcd-server.key 2048
生成签发请求:
# openssl req -new -key etcd-server.key -subj "/CN=etcd-server" \ -config etcd-server.cnf -out etcd-server.csr
签发证书:
# openssl x509 -req -in etcd-server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ -out etcd-server.crt -days 365 -extensions v3_req -extfile etcd-server.cnf
完成证书生成步骤之后,把 *.key
和 *.crt
文件保存到 /etc/kubernetes/pki
目录中,就可以通过 systemctl start
命令启动 etcd 服务了。同时,使用 systemctl enable
命令将服务加入开机启动列表中:
# systemctl daemon-reload # systemctl enable etcd.service # systemctl start etcd.service
通过执行 etcdctl cluster-health
,可以验证 etcd 是否正确启动:
# etcdctl --endpoints https://127.0.0.1:2379 cluster-health member 8e9e05c52164694d is healthy: got healthy result from https://10.211.55.33:2379 cluster is healthy
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Impatient JavaScript 中文版校对活动期待大家的参与
- JavaScript权威面试指南
- RxJS 非权威指南
- JavaScript权威指南笔记
- MongoDB安全权威指南
- Elasticsearch权威指南学习笔记
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Little MLer
Matthias Felleisen、Daniel P. Friedman、Duane Bibby、Robin Milner / The MIT Press / 1998-2-19 / USD 34.00
The book, written in the style of The Little Schemer, introduces instructors, students, and practicioners to type-directed functional programming. It covers basic types, quickly moves into datatypes, ......一起来看看 《The Little MLer》 这本书的介绍吧!