【kubernetes】集群的二进制部署安装

目录

一、环境部署

二、部署 docker引擎

三、部署etcd集群

1、准备签发证书环境

1.1、master01服务器配置

1.1.1、准备cfssl证书生成工具

 1.1.2、生成Etcd证书

1.1.3、创建存放etcd配置文件,命令文件,证书的目录,并启动etcd服务

1.1.4、把 etcd 相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点

1.2、node01服务器配置

1.2.1、修改 etcd 配置文件

1.2.2、启动 etcd 服务

1.3、node02服务器配置

1.3.1、修改 etcd 配置文件

1.3.2、启动 etcd 服务 

1.4、查看 etcd 集群状态

四、部署 k8s 集群

1、部署 Master01 服务器相关组件

1.1、生成签发证书

1.2、安装并启动 apiserver 服务

1.3、安装并启动 scheduler 服务

1.4、安装并启动 controller-manager 服务

2、部署 Node 服务器的相关组件

2.1 创建kubernetes工作目录

2.2 在master01节点上操作,再拷贝相关文件到node节点

2.3 在 node 节点上操作,启动 kubelet 服务

2.4 在 node 节点上操作,启动 proxy 服务

2.5 部署 CNI 网络组件

2.5.1 方案一(部署 flannel)

3、部署 CoreDNS


一、环境部署

(1)所有设备关闭防火墙,清空iptables规则

systemctl disable --now firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

(2)所有设备关闭selinux

setenforce 0    #临时关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config   #永久关闭

(3)所有设备关闭swap

swapoff -a    #临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab    #永久关闭

(4)修改所有设备的主机名

[root@localhost ~]#hostnamectl set-hostname master01
[root@localhost ~]#bash
 
[root@localhost ~]#hostnamectl set-hostname node01
[root@localhost ~]#bash
 
[root@localhost ~]#hostnamectl set-hostname node02
[root@localhost ~]#bash

(5)所有设备修改本地的hosts文件

cat >> /etc/hosts << EOF
172.16.88.77 master01
172.16.88.88 node01
172.16.88.99 node02
EOF

(6)所有设备调整内核参数

cat > /etc/sysctl.d/k8s.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF
sysctl --system     #重新加载系统的配置参数

(7)所有设备实现时间同步

yum install ntpdate -y
ntpdate time.windows.com

二、部署 docker引擎

在所有k8s集群的 node 节点中部署 docker引擎

yum install -y yum-utils device-mapper-persistent-data lvm2    
#需要在安装docker前,安装好这些依赖包
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#添加 Docker CE 的软件源,这个软件源位于阿里云镜像站点。这样做是为了从阿里云镜像站点下载 Docker CE 软件包,加快下载速度
yum install -y docker-ce docker-ce-cli containerd.io
#用于安装 Docker CE 及其相关组件,包括 Docker CE、Docker CE CLI 和 containerd.io
systemctl enable --now docker.service
#开启docker,并设置开机自启动
systemctl status docker.service
#查看当前docker是否启动成功

三、部署etcd集群

  • etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd是go语言编写的。
  • etcd 作为服务发现系统,有以下的特点:

① 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
② 安全:支持SSL证书验证
③ 快速:单实例支持每秒2k+读操作
④ 可靠:采用raft算法,实现分布式系统数据的可用性和一致性

  • etcd 目前默认使用2379端口提供HTTP API服务, 2380端口和peer通信(这两个端口已经被IANA(互联网数字分配机构)官方预留给etcd)。 即etcd默认使用2379端口对外为客户端提供通讯,使用端口2380来进行服务器间内部通讯
  • etcd 在生产环境中一般推荐集群方式部署。由于etcd 的leader选举机制,要求至少为3台或以上的奇数台

1、准备签发证书环境

CFSSL 是 CloudFlare 公司开源的一款 PKI/TLS 工具。 CFSSL 包含一个命令行工具和一个用于签名、验证和捆绑 TLS 证书的 HTTP API 服务。使用Go语言编写。

CFSSL 使用配置文件生成证书,因此自签之前,需要生成它识别的 json 格式的配置文件,CFSSL 提供了方便的命令行生成配置文件。

CFSSL 用来为 etcd 提供 TLS 证书,它支持签三种类型的证书:

① client 证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如 kube-apiserver 访问 etcd;

② server 证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如 etcd 对外提供服务;

③ peer 证书,相互之间连接时使用的证书,如 etcd 节点之间进行验证和通信。

方便起见,这里本次全部都使用同一套证书认证。

1.1、master01服务器配置

1.1.1、准备cfssl证书生成工具
#准备cfssl证书生成工具
[root@master01 ~]#wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
#cfssl:证书签发的工具命令
[root@master01 ~]#wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
#cfssljson:将 cfssl 生成的证书(json格式)变为文件承载式证书
[root@master01 ~]#wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo
[root@master01 ~]#chmod +x /usr/local/bin/cfssl*    #给所有证书签发工具,添加执行权限

#cfssl-certinfo:验证证书的信息
cfssl-certinfo -cert <证书名称>			#可查看证书的信息
 1.1.2、生成Etcd证书

(1)执行 etcd-cert.sh 脚本,生成 Etcd 证书

[root@master01 ~]#mkdir /opt/k8s
[root@master01 k8s]#cd /opt/k8s/
#上传 etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中
 
#添加执行权限
[root@master01 k8s]#chmod +x etcd-cert.sh etcd.sh
 
#创建用于生成CA证书、etcd 服务器证书以及私钥的目录
[root@master01 k8s]#mkdir /opt/k8s/etcd-cert
[root@master01 k8s]#mv etcd-cert.sh etcd-cert/
[root@master01 k8s]#cd /opt/k8s/etcd-cert/
[root@master01 etcd-cert]# egrep -v "^#|^$" etcd-cert.sh
cat > ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "www": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF
cat > ca-csr.json <<EOF
{
    "CN": "etcd",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
cat > server-csr.json <<EOF
{
    "CN": "etcd",
    "hosts": [
    "172.16.88.77",
    "172.16.88.88",
    "172.16.88.99"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "BeiJing",
            "ST": "BeiJing"
        }
    ]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server

[root@master01 etcd-cert]#./etcd-cert.sh			
#执行脚本,生成CA证书、etcd 服务器证书以及私钥
 
[root@master01 etcd-cert]#ls
ca-config.json  ca-csr.json  ca.pem        server.csr       server-key.pem
ca.csr          ca-key.pem   etcd-cert.sh  server-csr.json  server.pem

1.1.3、创建存放etcd配置文件,命令文件,证书的目录,并启动etcd服务

(1)上传或下载 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中

#上传或下载 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务
[root@master01 etcd-cert]#cd /opt/k8s/
[root@master01 k8s]#https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz
[root@master01 k8s]#tar xf etcd-v3.4.9-linux-amd64.tar.gz    #解压
[root@master01 k8s]#ls etcd-v3.4.9-linux-amd64
Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md
 
#etcd就是 etcd 服务的启动命令,后面可跟各种启动参数
#etcdctl主要为etcd 服务提供了命令行操作

(2)创建存放 etcd 配置文件,命令文件,证书的目录

#创建存放 etcd 配置文件,命令文件,证书的目录
[root@master01 k8s]#mkdir -p /opt/etcd/{cfg,bin,ssl}
[root@master01 k8s]#cd /opt/k8s/etcd-v3.4.9-linux-amd64/
[root@master01 etcd-v3.4.9-linux-amd64]#mv etcd etcdctl /opt/etcd/bin/
[root@master01 etcd-v3.4.9-linux-amd64]#cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/
#查看 etcd.sh 脚本生效的配置
[root@master01 etcd-v3.4.9-linux-amd64]#cd /opt/k8s/
[root@master01 k8s]#egrep -v "^#|^$" etcd.sh
ETCD_NAME=$1
ETCD_IP=$2
ETCD_CLUSTER=$3
WORK_DIR=/opt/etcd
cat > $WORK_DIR/cfg/etcd  <<EOF
ETCD_NAME="${ETCD_NAME}"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://${ETCD_IP}:2380"
ETCD_LISTEN_CLIENT_URLS="https://${ETCD_IP}:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://${ETCD_IP}:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://${ETCD_IP}:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://${ETCD_IP}:2380,${ETCD_CLUSTER}"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
cat > /usr/lib/systemd/system/etcd.service <<EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=${WORK_DIR}/cfg/etcd
ExecStart=${WORK_DIR}/bin/etcd \
--cert-file=${WORK_DIR}/ssl/server.pem \
--key-file=${WORK_DIR}/ssl/server-key.pem \
--trusted-ca-file=${WORK_DIR}/ssl/ca.pem \
--peer-cert-file=${WORK_DIR}/ssl/server.pem \
--peer-key-file=${WORK_DIR}/ssl/server-key.pem \
--peer-trusted-ca-file=${WORK_DIR}/ssl/ca.pem \
--logger=
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值