IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 二进制部署Kubernetes集群(单Master节点) -> 正文阅读

[网络协议]二进制部署Kubernetes集群(单Master节点)

在这里插入图片描述

部署etcd集群

etcd特点及端口
etcd 作为服务发现系统,有以下的特点:
简单: 安装配置简单,而且提供了HTTP API进行交互,使用也很简单安全:支持ssL证书验证
快速: 单实例支持每秒2k+读操作
可靠: 采用raft算法,实现分布式系统数据的可用性和一致性

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

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

CFSSL 使用配置文件生成证书,因此自签之前,需要生成它识别的json格式的配置文件,CFSSL 提供了方便的命令行生成配置文件。CFSSL用来为etcd提供TLS 证书,它支持签三种类型的证书:

1、client 证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如 kube-apiserver访问etcd;
2、server 证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如 etcd对外提供服务;
3、peer 证书,相互之间连接时使用的证书,如 etcd 节点之间进行验证和通信。
这里全部都使用同一套证书认证。

在master01节点操作

官网地址:https://github.com/kubernetes/kubernetes/releases?after=v1.13.1
下载官方构建的二进制包

mkdir k8s
 cd k8s/
 ls    //从宿主机拖进来
(etcd-cert.sh  etcd.sh)

 mkdir etcd-cert
 mv etcd-cert.sh etcd-cer

载证书制作工具

 vim cfssl.sh
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo
chmod +x /usr/local/bin/cfssl /usr/local/bin/cfssljson /usr/local/bin/cfssl-certinfo

下载cfssl官方包

bash cfssl.sh
ls /usr/local/bin/
查看结果
cfssl  cfssl-certinfo  cfssljson

制作证书

//定义ca证书
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 CA",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF

//生产证书,生成ca-key.pem  ca.pem
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

2020/08/1216:32:56 [INFO] generating a new CA key and certificate from CSR
2020/08/12 16:32:56 [INFO] generate received request
2020/08/12 16:32:56 [INFO] received CSR
2020/08/12 16:32:56 [INFO] generating key: rsa-2048
2020/08/12 16:32:56 [INFO] encoded CSR
2020/08/12 16:32:56 [INFO] signed certificate with serial number 595395605361409801445623232629543954602649157326

指定etcd三个节点之间的通信验证

cat > server-csr.json <<EOF
{
    "CN": "etcd",
    "hosts": [
    "192.168.195.149",
    "192.168.195.150",
    "192.168.195.151"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "BeiJing",
            "ST": "BeiJing"
        }
    ]
}
EOF

启动etcd服务

//etcd 二进制包地址:https://github.com/etcd-io/etcd/releases
上传etcd-v3.3.10-1inux-amd64.tar.gz 到/opt/k8s/目录中,解压etcd压缩包
cd /opt/k8s/
tar zxvf etcd-v3.3.10-linux-amd64.tar.gz
ls etcd-v3.3.10-linux-amd64

创建用于存放etcd配置文件,命令文件,证书的目录,将刚刚解压出来的etcd文件中的 etcd 和 etcdctl移动到 /opt/etcd/bin目录下
将刚刚解压出来的etcd文件中的 私钥和公钥还有证书 移动到 /opt/etcd/ssl目录下

mkdir -p /opt/etcd/{cfg,bin,ssl}
mv /opt/k8s/etcd-v3.3.10-linuk-amd64/etcd /opt/k8s/etcd-v3.3.10-linux-amd64/etcdctl /opt/etcd/bin/
cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/

执行etcd.sh脚本文件

./etcd.sh etcd01 192.168.111.80 etcd02=https://192.168.111.90:2380,etcd03=https://192.168.111.100:2380
//进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都已启动,可忽略这个情况

//另外打开一个窗口查看etcd进程是否正常
ps -ef | grep etcd


将Master中的两个配置文件远程复制给另外两台节点服务器

//把etcd相关证书文件和命令文件全部拷贝到另外两个etcd集群节点
scp -r /opt/etcd/ root@192.168.111.90:/opt/
scp -r /opt/etcd/ root@192.168.111.100:/opt/

//把etcd服务管理文件拷贝到另外两个etcd集群节点
scp /usr/lib/systemd/system/etcd.service root@192.168.111.90:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.111.100:/usr/lib/systemd

在node节点上修改配置

systemctl stop firewalld
setenforce 0

hostnamectl set-hostname node01
su

更改Node节点服务器的配置文件

修改配置文件
vim /opt/etcd/cfg/etcd

.启动服务

systemctl start etcd.service
systemctl status etcd.service

node02节点一样配置

检查一下etcd状态

cd /opt/etcd/bin/
ln -s /opt/etcd/bin/etcdctl /usr/local/bin/
cd /opt/etcd/ssl/
etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.111.80:2379,https://192.168.111.90:2379,https://192.168.111.100:2379" cluster-health

部署Docker引擎

在所有Node节点上面部署

安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 
设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

yum install -y docker-ce ##这里我只安装docker-ce了

systemctl start docker
systemctl status docker

flannel网络配置

flannel是实现不同node中Pod相互通信用的。
1、常见的通信方式
Overlay Network
叠加网络,在二层或者三层基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路隧道连接起来(类似于VPN)。
VXLAN
将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址
Flannel
Flannel的功能是让集群中的不同节点主机创建的Docker 容器都具有全集群唯一的虚拟 IP地址。
Flannel是Overlay网络的一种,也是将TCP源数据包封装在另一种网络包里而进行路由转发和通信,目前己经支持UDP、VXLAN、AWS VPC 等数据转发方式。

flannel的工作流程
flannel 会把内部的pod iP 封装到udp中,再根据在etcd 保存的路由表通过物理网卡发送给目的node,目的node在接受到转发来的数据后由flanneld解封装暴露出udp里的内部 Pod ip ,再根据目的IP由 flannel0 --> dockerO转发到目的pod中

搭建部署

master节点操作

1.写入分配的子网段到ETCD中,供flannel使用

cd /opt/etcd/ssl/

etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.111.80:2379,https://192.168.111.90:2379,https://192.168.111.100:2379" set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'

所以node节点操作

2.上传 flannel.sh 和 flannel-v0.10.0-linux-amnd64.tar.gz到/opt目录中,解压flannel压缩包

flannel软件包
flannel.sh脚本文件

cd /opt

tar -zxvf flannel-v0.10.0-linux-amd64.tar.gz

3.创建工作目录

mkdir -p /opt/kubernetes/{cfg,bin,ssl}

将 flanneld 和 mk-docker-opts.sh 放入工作目录中的bin目录下
mv flanneld mk-docker-opts.sh /opt/kubernetes/bin/


4.执行脚本文件

chmod +x flannel.sh

./flannel.sh https://192.168.111.80:2379,https://192.168.111.90:2379,https://192.168.111.100:2379

systemctl status flanneld.service


5.配置docker连接flannel
//修改配置文件
vim /usr/lib/systemd/system/docker.service

----------------13行和14行添加------------------
13 EnvironmentFile=/run/flannel/subnet.env
14 ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS -H fd:// --containerd=/run/containerd/containerd.sock

.重载和重启docker服务

systemctl  daemon-reload
systemctl restart docker
ifconfig
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:29:09  更:2021-08-14 14:32:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:17:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码