微服务之——Kubernetes 集群搭建(一)
上篇文章,我们和大家谈了下k8s的基本概念以及基本的组件,这期我们就来动手搭建K8S的集群。在
部署集群前,我们先看下几种常见的K8S集群部署方式。
K8S集群部署有3种方式:kubeadmin、minikube和二进制包。
前两者属于自动部署,简化部署操作,我们这里强烈推荐初学者使用二进制包部署,因为自动部署屏蔽了很多细节,使得对各个模块感知很少,非常不利用学习。
下面我们就来以二进制包的方式去部署K8S集群
本次规划 5台主机,ip地址,主机名如图所示:
环境:centos7 内核3.10.0 (docker 要求是内核3.8以上)
主机信息说明
集群架构图
业务部署表
本实验是在vmware workstation 14pro 上 部署安装的
网络使用NAT 模式,网段为10.4.7.0/24 ; 网关为10.4.7.254
- 所有主机关闭SELINUX,firewalld
- 所有主机都安装EPEL源
[root@hdss7-11 ~]# yum install epel-release
3. 安装一些必要的工具
[root@hdss7-11 ~]# yum install -y wget net-tools telnet tree nmap sysstat lrzsz dos2unix bind-utils
一、部署DNS 服务器
在10.4.7.11 上部署安装
[root@hdss7-11 ~]# yum install bind -y
[root@hdss7-11 ~]# cp /etc/named.conf /etc/named.conf_bak
[root@hdss7-11 ~]# vim /etc/named.conf
listen-on port 53 { 10.4.7.11; }; —修改监听地址
allow-query { any; }; –为哪些服务器提供解析服务
forwarders { 10.4.7.254; }; —用来指定上一层DNS地址,一般指定网关,确保服务能够访问公网
dnssec-enable no;—–是否支持DNSSEC开关 PS:dnssec作用:1.为DNS数据提供来源验证 2.为数据提供完整性性验证 3.为查询提供否定存在验证
dnssec-validation no;—-是否进行DNSSEC确认开关
#如果不适用IPV6,可以将以下配置删除:
listen-on-v6 port 53 { ::1; };
配置文件截图:(仅粘贴修改部分)
named.conf
named.conf
#检查配置文件:
[root@hdss7-11 ~]# named-checkconf
区域配置文件:
主机域 host.com
业务域 fxkj.com
[root@hdss7-11 named]# vim /etc/named.rfc1912.zones
在文件最后,添加本次需要用到的两个dns域:
zone “host.com” IN {
type master;
file “host.com.zone“;
allow-update { 10.4.7.11; };
};
zone “fxkj.com” IN {
type master;
file “fxkj.com.zone“;
allow-update { 10.4.7.11; };
};
编辑刚刚添加的两个域的配置文件:将用到的DNS域解析A记录添加到配置文件
[root@hdss7-11 named]# vim host.com.zone
$ORIGIN host.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.host.com. dnsadmin.host.com. (
2019111001 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.host.com.
$TTL 60 ; 1 minute
dns A 10.4.7.11
HDSS7-11 A 10.4.7.11
HDSS7-12 A 10.4.7.12
HDSS7-21 A 10.4.7.21
HDSS7-22 A 10.4.7.22
HDSS7-200 A 10.4.7.200
[root@hdss7-11 named]# vim fxkj.com.zone
$ORIGIN fxkj.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.fxkj.com. dnsadmin.fxkj.com. (
2019111001 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.fxkj.com.
$TTL 60 ; 1 minute
dns A 10.4.7.11
harbor A 10.4.7.200 ;后面需要用到harbor 仓库的解析
#10.4.7.11上执行
[root@hdss7-11 ~]# systemctl enable named
[root@hdss7-11 ~]# systemctl restart named
修改网卡配置(所有主机):如果网卡指定了DNS1配置
[root@hdss7-11 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=10.4.7.11
或者 使用nmtui 命令 编辑
重启网卡(所有主机),重启named服务(bind主机)
[root@hdss7-11 ~]# systemctl restart network
[root@hdss7-11 ~]# systemctl restart named
在宿主机上,修改vmware8 上面的DNS地址为 10.4.7.11
打开CMD ping测试
二、准备证书签发环境
部署在 运维主机 HDSS7-200.host.com 上(10.4.7.200)
配置CA证书服务:
使用cfssl:R1.2 证书签发工具
需要三个软件: cfssl ,cfssl-json ,cfssl-certinfo
在主机hdss7-200上操作:
[root@hdss7-11 ~]# cd /usr/bin
[root@hdss7-11 ~]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/bin/cfssl
[root@hdss7-11 ~]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/bin/cfssl-json
[root@hdss7-11 ~]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/bin/cfssl-certinfo
赋予执行权限:
[root@hdss7-11 ~]# chmod +x /usr/bin/cfssl*
创建证书存放位置(可自己设置):
[root@hdss7-200 ~]# mkdir /opt/certs
创建CA证书申请文件:
[root@hdss7-200 certs]# vim /opt/certs/ca-csr.json
#这里注意”expiry”: “175200h”,key,如果使用kubeadmin安装,默认证书有效期是1年,我们这里手动部署为20年,这里如果证书失效,会导致整个k8s集群瘫痪。
{
“CN”: “fxkjnj“,
“hosts”: [
],
“key”: {
“algo”: “rsa”,
“size”: 2048
},
“names”: [
{
“C”: “CN”,
“ST”: “beijing”,
“L”: “beijing”,
“O”: “fxkjnj”,
“OU”: “fxkj”
}
],
“ca”: {
“expiry”: “175200h”
}
}
申请证书:
[root@hdss7-200 certs]# cfssl gencert -initca ca-csr.json | cfssl-json -bare ca
我们后面的所有证书,都是基于这套ca证书签发的。
三、部署docker 环境
分别部署在下面3台主机上:
HDSS7-200.host.com(10.4.7.200)
HDSS7-21.host.com(10.4.7.21)
HDSS7-22.host.com(10.4.7.22)
[root@hdss7-200 certs]# curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun
编辑docker配置文件:
[root@hdss7-200 certs]# mkdir /etc/docker
[root@hdss7-200 certs]# mkdir /data/docker
[root@hdss7-200 certs]# vim /etc/docker/daemon.json
{
“graph”: “/data/docker”,
“storage-driver”: “overlay2”,
“insecure-registries”: [“registry.access.redhat.com”,”quay.io”,”harbor.fxkj.com”],
“registry-mirrors”: [“https://q2gr04ke.mirror.aliyuncs.com”],
“bip”: “172.7.200.1/24”, #HDSS7-21.host.com 的docker 桥IP为172.7.21.1/24 ; HDSS7-22.host.com 的docker 桥IP为172.7.22.1/24,这样做是为了方便后面K8S快速定位pod在哪台机器上
“exec-opts”: [“native.cgroupdriver=systemd”],
“live-restore”: true
}
启动docker并添加开机启动:
[root@hdss7-200 certs]#systemctl start docker
[root@hdss7-200 certs]#systemctl enable docker
好了,本节内容就先说这些,下期我们来说 harbor 镜像仓库的部署
暂无评论内容