Kubernetes 权威指南第二章校对(2)

栏目: IT技术 · 发布时间: 4年前

内容简介: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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Spring Into HTML and CSS

Spring Into HTML and CSS

Molly E. Holzschlag / Addison-Wesley Professional / 2005-5-2 / USD 34.99

The fastest route to true HTML/CSS mastery! Need to build a web site? Or update one? Or just create some effective new web content? Maybe you just need to update your skills, do the job better. Welco......一起来看看 《Spring Into HTML and CSS》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具