『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

发布时间:2020-06-14 14:35:55 作者:IT人故事
来源:网络 阅读:179

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

kubernetes最复杂的就是认证和授权,这次从头搭建另外一套3个虚机的kubernetes,还是通过vagrant来进行搭建,具体vagrant的配置信息查看源码:https://github.com/limingios/msA-docker k8s分支

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

预先环境准备

系统类型 IP地址 节点角色 CPU Memory Hostname
Centos7 192.168.68.101 master 2 4G server01
Centos7 192.168.68.102 worker 1 2G server02
Centos7 192.168.68.103 worker 1 2G server03

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

vi /lib/systemd/system/docker.service

#找到ExecStart=xxx,在这行上面加入一行,内容如下:(k8s的网络需要)
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

系统设置(所有节点)

关闭、禁用防火墙(让所有机器之间都可以通过任意端口建立连接)
systemctl stop firewalld
systemctl disable firewalld
#查看状态
systemctl status firewalld

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

####设置系统参数 - 允许路由转发,不对bridge的数据进行处理

#写入配置文件
cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#生效配置文件
sysctl -p /etc/sysctl.d/k8s.conf

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

配置host文件
#配置host,使每个Node都可以通过名字解析到ip地址
vi /etc/hosts
#加入如下片段(ip地址和servername替换成自己的)
192.168.68.101 server01
192.168.68.102 server02
192.168.68.103 server03

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

准备二进制文件(所有节点)

kubernetes的安装有几种方式,不管是kube-admin还是社区贡献的部署方案都离不开这几种方式:

从上面的三种方式中其实使用镜像是比较优雅的方案,容器的好处自然不用多说。但从初学者的角度来说容器的方案会显得有些复杂,不那么纯粹,会有很多容器的配置文件以及关于类似二进制文件提供的服务如何在容器中提供的问题,容易跑偏。
所以我们这里使用二进制的方式来部署。二进制文件已经这里备好,大家可以打包下载,把下载好的文件放到每个节点上,放在哪个目录随你喜欢,放好后最好设置一下环境变量$PATH,方便后面可以直接使用命令。(科学上网的老铁也可以自己去官网找找)
####[下载地址(kubernetes 1.9.0版本)] (https://pan.baidu.com/s/1bMnqWY)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

tar -xvf kubernetes-bins.tar.gz 
mv ~/kubernetes-bins/ bin

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

准备配置文件(所有节点)

上一步我们下载了kubernetes各个组件的二进制文件,这些可执行文件的运行也是需要添加很多参数的,包括有的还会依赖一些配置文件。现在我们就把运行它们需要的参数和配置文件都准备好。

下载配置文件
#安装git
yum -y install git
#到home目录下载项目
git clone https://github.com/limingios/kubernetes-starter.git
#看看git内容
cd ~/kubernetes-starter && ll

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

文件说明
3台机器生成配置

这里会根据大家各自的环境生成kubernetes部署过程需要的配置文件。
在每个节点上都生成一遍,把所有配置都生成好,后面会根据节点类型去使用相关的配置。

#cd到之前下载的git代码目录
cd ~/kubernetes-starter
#编辑属性配置(根据文件注释中的说明填写好每个key-value)
vi config.properties
#生成配置文件,确保执行过程没有异常信息

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)
『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

生成配置(所有节点)

跟基础环境搭建一样,我们需要生成kubernetes-with-ca的所有相关配置文件

#生成配置
./gen-config.sh with-ca

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)
PS:这个截图master_ip应该是192.168.68.101

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

安装cfssl(所有节点)

cfssl是非常好用的CA工具,我们用它来生成证书和秘钥文件
安装过程比较简单,

#下载
wget  https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 \
https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
#修改为可执行权限
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64
#移动到bin目录
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
#验证
cfssl version

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

生成根证书(主节点)

根证书是证书信任链的根,各个组件通讯的前提是有一份大家都信任的证书(根证书),每个人使用的证书都是由这个根证书签发的。

#所有证书相关的东西都放在这
mkdir -p /etc/kubernetes/ca
#准备生成证书的配置文件
cp ~/kubernetes-starter/target/ca/ca-config.json /etc/kubernetes/ca
cp ~/kubernetes-starter/target/ca/ca-csr.json /etc/kubernetes/ca
#生成证书和秘钥
cd /etc/kubernetes/ca
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
#生成完成后会有以下文件(我们最终想要的就是ca-key.pem和ca.pem,一个秘钥,一个证书)
ls

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

改造etcd(主节点)

准备证书

etcd节点需要提供给其他服务访问,就要验证其他服务的身份,所以需要一个标识自己监听服务的server证书,当有多个etcd节点的时候也需要client证书与etcd集群其他节点交互,当然也可以client和server使用同一个证书因为它们本质上没有区别。

#etcd证书放在这
mkdir -p /etc/kubernetes/ca/etcd
#准备etcd证书配置
cp ~/kubernetes-starter/target/ca/etcd/etcd-csr.json /etc/kubernetes/ca/etcd/
cd /etc/kubernetes/ca/etcd/
#使用根证书(ca.pem)签发etcd证书
cfssl gencert \
        -ca=/etc/kubernetes/ca/ca.pem \
        -ca-key=/etc/kubernetes/ca/ca-key.pem \
        -config=/etc/kubernetes/ca/ca-config.json \
        -profile=kubernetes etcd-csr.json | cfssljson -bare etcd
#跟之前类似生成三个文件etcd.csr是个中间证书请求文件,我们最终要的是etcd-key.pem和etcd.pem
ls

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

更新etcd服务:

cp ~/kubernetes-starter/target/master-node/etcd.service /lib/systemd/system/
mkdir -p /var/lib/etcd
systemctl enable etcd.service
systemctl daemon-reload
service etcd start
#验证etcd服务(endpoints自行替换)
ETCDCTL_API=3 etcdctl \
  --endpoints=https://192.168.68.101:2379  \
  --cacert=/etc/kubernetes/ca/ca.pem \
  --cert=/etc/kubernetes/ca/etcd/etcd.pem \
  --key=/etc/kubernetes/ca/etcd/etcd-key.pem \
  endpoint health

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

api-server(主节点)

准备证书
#api-server证书放在这,api-server是核心,文件夹叫kubernetes吧,如果想叫apiserver也可以,不过相关的地方都需要修改哦
mkdir -p /etc/kubernetes/ca/kubernetes
#准备apiserver证书配置
cp ~/kubernetes-starter/target/ca/kubernetes/kubernetes-csr.json /etc/kubernetes/ca/kubernetes/
cd /etc/kubernetes/ca/kubernetes/
#使用根证书(ca.pem)签发kubernetes证书
cfssl gencert \
        -ca=/etc/kubernetes/ca/ca.pem \
        -ca-key=/etc/kubernetes/ca/ca-key.pem \
        -config=/etc/kubernetes/ca/ca-config.json \
        -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes
#跟之前类似生成三个文件kubernetes.csr是个中间证书请求文件,我们最终要的是kubernetes-key.pem和kubernetes.pem
ll

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

api-server服务

生成token认证文件

#生成随机token
head -c 16 /dev/urandom | od -An -t x | tr -d ' '
0b1bd95b94caa5534d1d4a7318d51b0e

#按照固定格式写入token.csv,注意替换token内容
echo "0b1bd95b94caa5534d1d4a7318d51b0e,kubelet-bootstrap,10001,\"system:kubelet-bootstrap\"" > /etc/kubernetes/ca/kubernetes/token.csv

更新api-server服务

cp ~/kubernetes-starter/target/master-node/kube-apiserver.service /lib/systemd/system/
systemctl daemon-reload
service kube-apiserver start

#检查日志
journalctl -f -u kube-apiserver
cat /lib/systemd/system/kube-apiserver.service 

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

controller-manager

controller-manager一般与api-server在同一台机器上,所以可以使用非安全端口与api-server通讯,不需要生成证书和私钥。

controller-manager服务

更新controller-manager服务

cd ~/kubernetes-starter/
cp ~/kubernetes-starter/target/master-node/kube-controller-manager.service /lib/systemd/system/
systemctl daemon-reload
service kube-controller-manager start

#检查日志
journalctl -f -u kube-controller-manager
cat /lib/systemd/system/kube-controller-manager.service 

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

scheduler

scheduler一般与apiserver在同一台机器上,所以可以使用非安全端口与apiserver通讯。不需要生成证书和私钥。

scheduler服务

查看diff
比较会发现两个文件并没有区别,不需要改造

cd ~/kubernetes-starter/
cp ~/kubernetes-starter/target/master-node/kube-scheduler.service /lib/systemd/system/
systemctl enable kube-scheduler.service

启动服务

service kube-scheduler start
#检查日志
journalctl -f -u kube-scheduler
cat /lib/systemd/system/kube-scheduler.service

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

PS:下次开始kubectl,calico,cni,kube-proxy,kube-dns的认证,授权。

『高级篇』docker之kubernetes搭建集群添加认证授权(上)(38)

推荐阅读:
  1. 『高级篇』docker之安全认证kubernetes命令熟悉(40)
  2. 『高级篇』docker之kubernetes搭建集群添加认证授权(下)(39)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes 容器 docker

上一篇:MySQL主从复制异常.md

下一篇:OSPF 多重分发简单配置 适合新手小白 (可跟做)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》