设计师联盟网站,成都微信小程序开发平台,潍坊大宇网络网站建设,建设网站用哪个好kubernetes 一、Kubernetes 的安装部署1. 常见的安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署2. K8S 部署 二进制与高可用的区别2.1 二进制部署2.2 kubeadm 部署二、Kubernetes 二进制部署过程1. 服务器相关设置以及架构2. 操作系统初始化配置3. 部署 etcd 集群4. 部… kubernetes 一、Kubernetes 的安装部署1. 常见的安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署 2. K8S 部署 二进制与高可用的区别2.1 二进制部署2.2 kubeadm 部署 二、Kubernetes 二进制部署过程1. 服务器相关设置以及架构2. 操作系统初始化配置3. 部署 etcd 集群4. 部署 docker引擎5. 部署 Master 组件6. 部署 Worker Node 组件7. 部署 CNI 网络组件7.1 部署 flannelOverlay NetworkFlannel 总结1. 如何通过Kubeadm安装K8S集群2. K8S 二进制搭建过程3. ectd 数据库备份还原4. K8S kubeadm搭建5. K8S 的网络6. VLAN 和 VXLAN 的区别7. flannel UDP 模式和 VXLAN 模式的工作原理8. flannel 和 calico 区别 一、Kubernetes 的安装部署
1. 常见的安装部署方式
1.1 Minikube Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用。 部署地址:https://kubernetes.io/docs/setup/minikube
1.2 Kubeadm Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署K8S集群,相对简单。 部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
1.3 二进制安装部署 生产首选,从官方下载发行版的二进制包,手动部署每个组件和自签TLS证书,组成K8S集群,新手推荐。 部署地址:https://github.com/kubernetes/kubernetes/releases
2. K8S 部署 二进制与高可用的区别
2.1 二进制部署
部署难,管理方便,集群伸展性能好;更稳定,集群规模到达一定的规模(几百个节点、上万个Pod),二进制稳定性是要高于kubeadm部署;遇到故障,宿主机起来了,进程也会起来。2.2 kubeadm 部署
部署简单,管理难;是以一种容器管理容器的方式允许的组件及服务,故障恢复时间比二进制慢;遇到故障,启动宿主机,再启动进程,最后去启动容器,集群才能恢复,速度比二进制慢。二、Kubernetes 二进制部署过程
1. 服务器相关设置以及架构
集群服务器主机名集群服务器IP地址集群服务器部署的服务k8s集群 master01192.168.145.15kube-apiserverkube-controller-managerkube-scheduler etcdk8s集群 master02192.168.145.30k8s集群 node01192.168.145.45kubelekube-proxydockerk8s集群 node02192.168.145.60etcd集群节点1192.168.145.15etcdetcd集群节点2192.168.145.45etcd集群节点3192.168.145.60负载均衡nginx+keepalive01(master)192.168.145.75负载均衡nginx+keepalive02(backup)192.168.145.902. 操作系统初始化配置
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
iptables -F iptables -t nat -F iptables -t mangle -F iptables -X#关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config#关闭swap,开机不自动挂载swap分区
swapoff -a
sed -ri 's/.*swap.*/#/' /etc/fstab #根据规划设置主机名
hostnamectl set-hostname master01
hostnamectl set-hostname master02
hostnamectl set-hostname node01
hostnamectl set-hostname node02#在master添加hosts
cat /etc/hosts EOF
192.168.145.15 master01
192.168.145.30 master02
192.168.145.45 node01
192.168.145.60 node02
EOF#调整内核参数
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
EOFsysctl --system#时间同步
yum install ntpdate -y
ntpdate time.windows.comcrontab -e
*/30 * * * * /usr/sbin/ntpdate ntp.aliyun.com /dev/null3. 部署 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台或以上的奇数台。
准备签发证书环境 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 节点上操作
#准备cfssl证书生成工具
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfochmod +x /usr/local/bin/cfssl*
------------------------------------------------------------------------------------------
cfssl:证书签发的工具命令
cfssljson:将 cfssl 生成的证书(json格式)变为文件承载式证书
cfssl-certinfo:验证证书的信息
cfssl-certinfo -cert 证书名称 #查看证书的信息
------------------------------------------------------------------------------------------### 生成Etcd证书 ###
mkdir /opt/k8s
cd /opt/k8s/#上传 etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中
chmod +x etcd-cert.sh etcd.sh#创建用于生成CA证书、etcd 服务器证书以及私钥的目录
mkdir /opt/k8s/etcd-cert
mv etcd-cert.sh etcd-cert/
cd /opt/k8s/etcd-cert/
./etcd-cert.sh #生成CA证书、etcd 服务器证书以及私钥ls
ca-config.json ca-csr.json ca.pem server.csr server-key.pem
ca.csr ca-key.