《kubernetes-1.8.0》01-环境准备
来源:互联网 发布:python语言及其应用 编辑:程序博客网 时间:2024/06/11 03:17
《kubernetes-1.8.0》01-环境准备
《kubernetes 1.8.0 测试环境安装部署》
时间:2017-11-21
一、环境介绍
测试环境采用4台虚拟机( OS centos7 ),所有kubernets组件均采用rpm方式安装,使用systemd来做管理,网络组件采用calico,Master实现HA。rpm安装包来自 Mritd 所做的tarball,版本1.8.0。下载链接:漠然提供的百度云 密码: 4zaz。
后续所有例子中使用的gcr.io镜像–> :images 密码:m0yq
镜像加载小脚本(试用centos 7):
vi load-image.sh #!/bin/bashdir=$(ls -l ./ |awk '{print $9}')for i in $dirdo docker load -i $idone
进到镜像存放目录执行脚本会将当前目录下的所有镜像load进去。
资源分配:
二、生成TLS相关证书和秘钥
kubernetes 系统各组件需要使用 TLS 证书对通信进行加密,本文档使用 CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件,CA 是自签名的证书,用来签名后续创建的其它 TLS 证书。
证书工具仍使用的是cfssl,百度云的压缩包里已经包含了,也可自行下载安装(注意,所有证书生成只需要在任意一台主机上生成一遍即可,我这里在 Master 上操作的)
证书说明:
1. 安装cfssl
etcd_ssl 目录用于存放etcd相关证书/秘钥,kubernets_ssl用于存放kubernets相关证书/秘钥
$ wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64$ chmod +x cfssl_linux-amd64$ sudo mv cfssl_linux-amd64 /usr/local/bin/cfssl$ wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64$ chmod +x cfssljson_linux-amd64$ sudo mv cfssljson_linux-amd64 /usr/local/bin/cfssljson$ wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64$ chmod +x cfssl-certinfo_linux-amd64$ sudo mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo$ export PATH=/usr/local/bin:$PATH$ mkdir ~/etcd_ssl ~/kubernets_ssl
2. 生成etcd相关证书秘钥
2.1 创建etcd 根CA证书
$ cd ~/etcd_ssl/$ cat > etcd-root-ca-csr.json << EOF{ "key": { "algo": "rsa", "size": 4096 }, "names": [ { "O": "etcd", "OU": "etcd Security", "L": "Beijing", "ST": "Beijing", "C": "CN" } ], "CN": "etcd-root-ca"}EOF
2.2 创建etcd群集证书配置文件
$ cat > etcd-gencert.json << EOF { "signing": { "default": { "expiry": "8760h" }, "profiles": { "etcd": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "8760h" } } } } EOF
etcd-gencert.json
:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;signing
:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;server auth
:表示 client 可以用该 CA 对 server 提供的证书进行验证;client auth
:表示 server 可以用该 CA 对 client 提供的证书进行验证;
2.3 生成etcd证书签名请求(csr)
$ cat > etcd-csr.json << EOF{ "key": { "algo": "rsa", "size": 4096 }, "names": [ { "O": "etcd", "OU": "etcd Security", "L": "Beijing", "ST": "Beijing", "C": "CN" } ], "CN": "etcd", "hosts": [ "127.0.0.1", "localhost", "172.18.169.131", "172.18.169.132", "172.18.169.133", "172.18.169.134", "172.18.169.135" ]}EOF
"hosts"
:表明指定授权使用该证书的 etcd 节点 IP,如果只写127.0.0.1,和本机网卡IP,则需要在3台etcd节点上分别进行证书签名请求,本次为了方便将所有节点的IP都写入。后续只需要将证书进行复制即可。
2.4 生成etcd证书
cfssl gencert --initca=true etcd-root-ca-csr.json \| cfssljson --bare etcd-root-ca
创建根CA(etcd-root-ca.csr、etcd-root-ca.pem、etcd-root-ca-key.pem)
cfssl gencert --ca etcd-root-ca.pem \--ca-key etcd-root-ca-key.pem \--config etcd-gencert.json \-profile=etcd etcd-csr.json | cfssljson --bare etcd
-profile=
:指定etcd证书配置文件中的profile(etcd);
创建被CA签名过的etcd证书对(etcd.csr、etcd.pem、etcd-key.pem)
2.5 移除.csr .json
rm *.csr *.json
3. 生成kubernets相关证书秘钥
Kubernetes 证书生成所需配置文件如下:
3.1 创建kubernets 根CA证书
$ cd ~/kubernets_ssl/$ cat > k8s-root-ca-csr.json << EOF{ "CN": "kubernetes", "key": { "algo": "rsa", "size": 4096 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "System" } ]}EOF
3.2 创建kuber-apiserver所使用证书配置文件
$ cat > k8s-gencert.json << EOF{ "signing": { "default": { "expiry": "87600h" }, "profiles": { "kubernetes": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "87600h" } } }}EOF
3.3 生成kube-apiserver证书签名请求(csr)
$ cat > kubernetes-csr.json << EOF{ "CN": "kubernetes", "hosts": [ "127.0.0.1", "10.254.0.1", "172.18.169.131", "172.18.169.132", "172.18.169.133", "localhost", "kubernetes", "kubernetes.default", "kubernetes.default.svc", "kubernetes.default.svc.cluster", "kubernetes.default.svc.cluster.local" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "System" } ]}EOF
3.4 生成kube-apiserver所使用证书
cfssl gencert --initca=true k8s-root-ca-csr.json \| cfssljson --bare k8s-root-ca
生成kubernet ca根证(k8s-root-ca.csr、k8s-root-ca.pem、k8s-root-ca-key.pem)
cfssl gencert --ca=k8s-root-ca.pem \--ca-key=k8s-root-ca-key.pem \--config k8s-gencert.json \--profile kubernetes kubernetes-csr.json\ | cfssljson --bare kubernetes
生成kuber-apiserver证书对(kubernetes.csr、kubernetes.pem、kubernetes.pem)
3.5 生成kubelet证书签名请求(csr)
$ cat > admin-csr.json << EOF{ "CN": "admin", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "system:masters", "OU": "System" } ]}EOF
"CN"
:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name);"O"
:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);kubernets X509证书验证模式,会将该group通过cluster-admin这个clusterrolebinding 绑定到cluster-admin这个cluster-role,继而获得所有的kube-api访问权限。
3.6 生成kubelet所使用证书
cfssl gencert --ca=k8s-root-ca.pem \--ca-key=k8s-root-ca-key.pem \--config k8s-gencert.json \--profile kubernetes admin-csr.json\ | cfssljson --bare admin
生成kubelet所使用证书对(admin.csr、admin.pem、admin.pem)
3.7 生成kube-proxy证书签名请求(csr)
$ cat > kube-proxy-csr.json << EOF{ "CN": "system:kube-proxy", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "System" } ]}EOF
3.8 生成kub-proxy所使用证书
cfssl gencert --ca=k8s-root-ca.pem \--ca-key=k8s-root-ca-key.pem \--config k8s-gencert.json \--profile kubernetes kube-proxy-csr.json\ | cfssljson --bare kube-proxy
生成kube-proxy所使用证书对(kube-proxy.csr、kube-proxy.pem、kube-proxy.pem)
3.9 移除.json .csr
rm *.csr *.json
3. 配置docker环境
当前最新版本docker-ce 17.09.0-ce
$ sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
安装所需组件
$ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
安装docker-ce仓库
sudo yum install docker-ce
安装docker-engine
去daocloud上找个加速器curl一下~~这里就不写了。
最后的效果:
至此环境准备完成。
提示:
- 关闭selinux、firewalld
- 确保系统时间准确一直(特别重要,否则后续会导致etcd数据库出租哦,pod卡在container creating阶段)
- 正确规划主机名并设置hosts文件
本系列其他内容:
01-环境准备
02-etcd群集搭建
03-kubectl管理工具
04-master搭建
05-node节点搭建
06-addon-calico
07-addon-kubedns
08-addon-dashboard
09-addon-kube-prometheus
10-addon-EFK
11-addon-Harbor
12-addon-ingress-nginx
13-addon-traefik
本文参考链接:
https://mritd.me/2017/10/09/set-up-kubernetes-1.8-ha-cluster/
https://github.com/opsnull/follow-me-install-kubernetes-cluster
https://docs.docker.com/engine/installation/linux/docker-ce/centos/#set-up-the-repository
https://kubernetes.io/docs/admin/authentication/#x509-client-certs
- 《kubernetes-1.8.0》01-环境准备
- python入门0-环境准备
- kubernetes环境搭建
- kubernetes环境搭建
- 环境准备
- 环境准备
- 准备环境
- Kubernetes系列01:Kubernetes入门
- Kubernetes系列01:Kubernetes入门
- Kubernetes实践(1)--环境搭建
- [Firefox][扩展系列][01]开发环境准备
- [Firefox][扩展系列][01]开发环境准备
- 01-Wooyoo游戏开发之环境准备
- OSGi - 第01章环境准备
- 越来越稳!Kubernetes 1.8.0 版本发布
- 《kubernetes-1.8.0》02-etcd群集搭建
- 《kubernetes-1.8.0》03-kubectl管理工具
- 《kubernetes-1.8.0》04-master搭建
- OAUTH2支持GET请求
- sierrajuan ArrayList和LinkedList的区别
- Tensor(tf.Tensor)
- 标准模板库STL-容器
- 运维三:如何把项目部署到服务器?
- 《kubernetes-1.8.0》01-环境准备
- 验证52域数据是否被篡改且根据52域算出密码
- 长按Home键唤起Google Now
- Frequent values UVA
- Nginx笔记
- 从零开始搭建ELK+GPE监控预警系统
- transformClassesWithJarMergingForRelease解决办法 解决版本冲突 解决jar包冲突
- 迷宫求解问题
- H5部署上线测试完成有点小小的成就感