热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kubernetes(K8s)2020版二进制安装k8s(3)

整体流程规划#查看服务的状态systemctlstatusetcd.servicek8s-master192.168.31.71etcd-1#master存在࿱

整体流程

在这里插入图片描述

在这里插入图片描述


规划

# 查看服务的状态
systemctl status etcd.servicek8s-master
192.168.31.71
etcd-1
# master存在:apiserver controller-manager scheduler etcd
kube-apiserver,
kube-controller-manager,
kube-scheduler,
etcdk8s-node1
192.168.31.72
etcd-2
# node存在 kubelet kube-proxy etcd
kubelet,
kube-proxy,
docker etcd

3、操作系统初始化配

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 关闭 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时# 关闭 swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在 master 添加 hosts
cat >> /etc/hosts << EOF
192.168.44.147 m1
192.168.44.148 n1
EOF
# 将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables &#61; 1
net.bridge.bridge-nf-call-iptables &#61; 1
EOF

sysctl --system # 生效# 时间同步 。正确的时间同步 见上个文档
yum install ntpdate -y
ntpdate time.windows.com

4、部署 Etcd 集群

Etcd 是一个分布式键值存储系统&#xff0c;
Kubernetes 使用 Etcd 进行数据存储&#xff0c;
所以先准备 一个 Etcd 数据库&#xff0c;为解决 Etcd 单点故障&#xff0c;应采用集群方式部署&#xff0c;这里使用 3 台组建集 群&#xff0c;可容忍 1 台机器故障&#xff0c;
当然&#xff0c;你也可以使用 5 台组建集群&#xff0c;可容忍 2 台机器故障。


4.1 准备 cfssl 证书生成工具

cfssl 是一个开源的证书管理工具&#xff0c;使用 json 文件生成证书&#xff0c;相比 openssl 更方便使用。 找任意一台服务器操作&#xff0c;这里用 Master 节点。

# cfssl
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
# cfssljson
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64# cfssl-certinfo
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64# 把 cfssl cfssljson cfssl-certinfo赋予执行的权限
chmod &#43;x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64# 把这三个软件 重命名&#xff0c;移动到 /usr/local
# cfssl
mv cfssl_linux-amd64 /usr/local/bin/cfssl
# cfssljson
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
# cfssl-certinfo
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

4.2 生成 Etcd 证书

&#xff08;1&#xff09;自签证书颁发机构&#xff08;CA&#xff09; 创建工作目录&#xff1a;

# 创建 TLS 下的 etcd 和 k8s目录
mkdir -p ~/TLS/{etcd,k8s}
# 进入
cd TLS/etcd

自签 CA&#xff1a;

// 创建 ca-config.json
cat > ca-config.json<< EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"www": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF// 创建 ca-csr.json
cat > ca-csr.json<< EOF
{
"CN": "etcd CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
EOF

  • 有了 ca-config 和 ca-csr 文件

生成证书&#xff1a;

# 使用 ca-csr.json生成证书
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -# 生成了 ca-kay 和 ca 的 pem文件
ls *pem
ca-key.pem ca.pem

&#xff08;2&#xff09;使用自签 CA 签发 Etcd HTTPS 证书 创建证书申请文件&#xff1a;

// 生成了 server-csr.json
cat > server-csr.json<< EOF
{
"CN": "etcd",
"hosts": [
"192.168.31.71",
"192.168.31.72",
"192.168.31.73"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF

注&#xff1a;上述文件 hosts 字段中 IP 为所有 etcd 节点的集群内部通信 IP&#xff0c;一个都不能少&#xff01;为了 方便后期扩容可以多写几个预留的 IP。

生成证书&#xff1a; cfssl gencert

# 使用了 ca.pem 和 ca-key.pem 和 ca-config 和 server-csr
# 即 上面的文件 都使用上了
cfssl gencert -ca&#61;ca.pem -ca-key&#61;ca-key.pem -config&#61;ca-config.json -
profile&#61;www server-csr.json | cfssljson -bare server# 查看 server相关的 pem
ls server*pem
# 得到 server-key 和 server .pem
server-key.pem server.pem

4.3 从 Github 下载二进制文件 下载地址&#xff1a;https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9- linux-amd64.tar.gz


4.4 部署 Etcd 集群

以下在节点 1 上操作&#xff0c;为简化操作&#xff0c;待会将节点 1 生成的所有文件拷贝到节点 2 和节点 3. &#xff08;1&#xff09;创建工作目录并解压二进制包

# 创建目录
mkdir /opt/etcd/{bin,cfg,ssl} –p
# 解压文件
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
# 移动 etcd 和 etcdctl到 /opt... 目录
mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/

&#xff08;2&#xff09;创建 etcd 配置文件

cat > /opt/etcd/cfg/etcd.conf << EOF
#[Member]
ETCD_NAME&#61;"etcd-1"
ETCD_DATA_DIR&#61;"/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS&#61;"https://192.168.31.71:2380"
ETCD_LISTEN_CLIENT_URLS&#61;"https://192.168.31.71:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS&#61;"https://192.168.31.71:2380"
ETCD_ADVERTISE_CLIENT_URLS&#61;"https://192.168.31.71:2379"
ETCD_INITIAL_CLUSTER&#61;"etcd-1&#61;https://192.168.31.71:2380,etcd2&#61;https://192.168.31.72:2380,etcd-3&#61;https://192.168.31.73:2380"
ETCD_INITIAL_CLUSTER_TOKEN&#61;"etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE&#61;"new"
EOF

ETCD_NAME&#xff1a;节点名称&#xff0c;集群中唯一 ETCD_DATA_DIR&#xff1a;数据目录 ETCD_LISTEN_PEER_URLS&#xff1a;集群通信监听地址 ETCD_LISTEN_CLIENT_URLS&#xff1a;客户端访问监听地址 ETCD_INITIAL_ADVERTISE_PEER_URLS&#xff1a;集群通告地址 ETCD_ADVERTISE_CLIENT_URLS&#xff1a;客户端通告地址 ETCD_INITIAL_CLUSTER&#xff1a;集群节点地址 ETCD_INITIAL_CLUSTER_TOKEN&#xff1a;集群 Token ETCD_INITIAL_CLUSTER_STATE&#xff1a;加入集群的当前状态&#xff0c;new 是新集群&#xff0c;existing 表示加入 已有集群

&#xff08;3&#xff09;systemd 管理 etcd

cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description&#61;Etcd Server
After&#61;network.target
After&#61;network-online.target
Wants&#61;network-online.target
[Service]
Type&#61;notify
EnvironmentFile&#61;/opt/etcd/cfg/etcd.conf
ExecStart&#61;/opt/etcd/bin/etcd \
--cert-file&#61;/opt/etcd/ssl/server.pem \
--key-file&#61;/opt/etcd/ssl/server-key.pem \
--peer-cert-file&#61;/opt/etcd/ssl/server.pem \
--peer-key-file&#61;/opt/etcd/ssl/server-key.pem \
--trusted-ca-file&#61;/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file&#61;/opt/etcd/ssl/ca.pem \
--logger&#61;zap
Restart&#61;on-failure
LimitNOFILE&#61;65536
[Install]
WantedBy&#61;multi-user.target
EOF

&#xff08;4&#xff09;拷贝刚才生成的证书 把刚才生成的证书拷贝到配置文件中的路径&#xff1a;

cp ~/TLS/etcd/ca*pem ~/TLS/etcd/server*pem /opt/etcd/ssl/

&#xff08;5&#xff09;启动并设置开机启动

systemctl daemon-reload # 刷新
systemctl start etcd # 启动
systemctl enable etcd # 自启

&#xff08;6&#xff09;将上面节点 1 所有生成的文件拷贝到节点 2 和节点 3

# /etcd 拷贝到 root&#64;ip:/目录
scp -r /opt/etcd/ root&#64;192.168.31.72:/opt/# etcd.service 依然如此拷贝
scp /usr/lib/systemd/system/etcd.service
root&#64;192.168.31.72:/usr/lib/systemd/system/scp -r /opt/etcd/ root&#64;192.168.31.73:/opt/scp /usr/lib/systemd/system/etcd.service
root&#64;192.168.31.73:/usr/lib/systemd/system/

然后在节点 2 和节点 3 分别修改 etcd.conf 配置文件中的节点名称和当前服务器 IP&#xff1a;

vi /opt/etcd/cfg/etcd.conf
#[Member]
ETCD_NAME&#61;"etcd-1" # 修改此处&#xff0c;节点 2 改为 etcd-2&#xff0c;节点 3 改为 etcd-3ETCD_DATA_DIR&#61;"/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS&#61;"https://192.168.31.71:2380" # 修改此处为当前服务器 IP
ETCD_LISTEN_CLIENT_URLS&#61;"https://192.168.31.71:2379" # 修改此处为当前服务器 IP
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS&#61;"https://192.168.31.71:2380" # 修改此处为当前
服务器 IP
ETCD_ADVERTISE_CLIENT_URLS&#61;"https://192.168.31.71:2379" # 修改此处为当前服务器
IP
ETCD_INITIAL_CLUSTER&#61;"etcd-1&#61;https://192.168.31.71:2380,etcd2&#61;https://192.168.31.72:2380,etcd-3&#61;https://192.168.31.73:2380"
ETCD_INITIAL_CLUSTER_TOKEN&#61;"etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE&#61;"new

最后启动 etcd 并设置开机启动&#xff0c;同上。

&#xff08;7&#xff09;查看集群状态

ETCDCTL_API&#61;3 /opt/etcd/bin/etcdctl --cacert&#61;/opt/etcd/ssl/ca.pem --
cert&#61;/opt/etcd/ssl/server.pem --key&#61;/opt/etcd/ssl/server-key.pem --
endpoints&#61;"https://192.168.31.71:2379,https://192.168.31.72:2379,https://192.16
8.31.73:2379"
endpoint health
https://192.168.31.71:2379 is healthy: successfully committed proposal: took &#61;
8.154404ms
https://192.168.31.73:2379 is healthy: successfully committed proposal: took &#61;
9.044117ms
https://192.168.31.72:2379 is healthy: successfully committed proposal: took &#61;
10.000825ms

如果输出上面信息&#xff0c;就说明集群部署成功。如果有问题第一步先看日志&#xff1a; /var/log/message 或 journalctl -u etcd


5、安装 Docker


推荐阅读
  • 基于SSL的mysql服务器的主从架构实现说明:本文选用172.16.22.1作为主服务器,172.16.22.3作为从服务器从服务器的mysql软件版 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • tomcat的log文件夹下有以下几种日志:1、catalina.YYYY-MM-DD.logcatalina引擎输出的日志;catalina是tomc ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • pc电脑如何投屏到电视?DLNA主要步骤通过DLNA连接,使用WindowsMediaPlayer的流媒体播放举例:电脑和电视机都是连接的 ... [详细]
  • charles3.11.1抓https包
    结论先行:用的是安卓测试机,没加固之前的生产环境的安装包,可以抓到https请求加固之后的包【也就是要上应用市场的包】,抓不到https请求电脑上的操作:1.安装证书【电脑上安装了 ... [详细]
author-avatar
花神
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有