1. 程式人生 > 其它 >WebUploader上傳超大檔案和斷點續傳技術

WebUploader上傳超大檔案和斷點續傳技術

常見的K8S按照部署方式

●Mini kube

Minikube是一個工具,可以在本地快速執行一個單節點微型K8S,僅用於學習、預覽K8S的一些特性使用

部署地址:https://kubernetes.io/docs/setup/minikube

●Kubeadmin

Kubeadmin也是一個工具,提供kubeadm init和kubeadm join,用於快速部署K8S叢集,相對簡單。

https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

●二進位制安裝部署

生產首選,從官方下載發行版的二進位制包,手動部署每個元件和自籤TLS證書,組成K8S叢集,新手推薦。https://github.com/kubernetes/kubernetes/releases

小結∶ Kubeadm降低部署門檻,但遮蔽了很多細節,遇到問題很難排查。如果想更容易可控,推薦使用二進位制包部署Kubernetes叢集,雖然手動部署麻煩點,期間可以學習很多工作原理,也利於後期維護。

Kubernetes二進位制部署(環境準備)

伺服器

IP地址

安裝工具

K8s叢集master01

(ectd節點1)

192.168.150.5

cfssl、cfssljson、cfssl-certinfo、etcd

K8s叢集node01

(etcd節點2)

192.168.150.10

cfssl、cfssljson、cfssl-certinfo、etcd、Flannel、docker

k8s叢集node02

(etcd節點3)

192.168.150.15

cfssl、cfssljson、cfssl-certinfo、etcd、Flannel、docker

#關閉防火牆
systemctl stop firewalld
systemctl disable firewalld

#關閉SE安全中心
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config 

#關閉swap 
swapoff -a                                      #臨時關閉
sed -ri '
s/.*swap.*/#&/' /etc/fstab #永久關閉,&符號代表前面匹配的所有 #根據規劃設定主機名 hostnamectl set-hostname master01 hostnamectl set-hostname node01 hostnamectl set-hostname node02 #在master新增hosts cat >> /etc/hosts << EOF 192.168.150.5 master01 192.168.150.10 node01 192.168.150.15 node02 EOF #將橋接的IPv4流量傳遞到iptables的鏈 cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system #時間同步,可以加入計劃任務定時執行減小偏差 yum install ntpdate -y ntpdate time.windows.com

Kubernetes二進位制部署(部署 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證書的 HTP API 服務。使用Go語言編寫。

CESSL 使用配置檔案生成證書,因此自籤之前,需要生成它識別的 json 格式的配置檔案,CESSL提供了方便的命令列生成配置檔案。

CFSSL用來為 etcd 提供 TLS 證書,它支援籤三種類型的證書∶

1、client 證書,服務端連線客戶端時攜帶的證書,用於客戶端驗證服務端身份,如 kube-apiserver 訪問 etcd

2、server 證書,客戶端連線服務端時攜帶的證書,用於服務端驗證客戶端身份,如 etcd 對外提供服務

3、peer 證書,相互之間連線時使用的證書,如 etcd 節點之間進行驗證和通訊。這裡全部都使用同一套證書認證。

在 master01 節點上操作下載證書製作工具

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-certinfo 
或
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/目錄並授權    
欄位解析
cfssl∶證書籤發的工具命令
cfssljson∶將 cfssl 生成的證書(json格式)變為檔案承載式證書
cfssl-certinfo∶驗證證書的資訊

cfssl-certinfo-cert <證書名稱>                                  #檢視證書的資訊

#建立k8s工作目錄
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 伺服器證書以及私鑰

啟動etcd服務

# etcd 二進位制包地址:https://github.com/etcd-io/etcd/releases

 

#上傳 etcd-v3.3.10-linux-amd64.tar.gz 到 /opt/k8s/ 目錄中,解壓 etcd 壓縮包

cd /opt/k8s/

tar zxvf etcd-v3.3.10-1jnux-amd64.tar.gz

ls etcd-v3.3.10-1inux-amd64

#etcd就是etcd 服務的啟動命令,後面可跟各種啟動引數

#etcdctl主要為etcd 服務提供了命令列操作
#建立用於存放 etcd 配置檔案,命令檔案,證書的目錄
mkdir -p /opt/etcd/{cfg,bin,ssl}

#移動etcd和etcdctl檔案到自定義的命令檔案中
mv /opt/k8s/etcd-v3.3.10-linux-amd64/etcd /opt/k8s/etcd-v3.3.10-linux-amd64/etcdctl
/opt/etcd/bin/                      

cp /opt/k8s/etcd-cert/ *.pem /opt/etcd/ssl/

#啟動etcd服務
/opt/k8s/etcd.sh etcd01 192.168.150.5 etcd02=https://192.168.150.10:2380,etcd03=https://192.168.150.15:2380
#進入卡住狀態等待其他節點加入,這裡需要三臺etcd服務同時啟動,如果只啟動其中一臺後,服務會卡在那裡,直到叢集中所有etcd節點都已啟動,可忽略這個情況

#另外開啟一個視窗檢視etcd程序是否正常
ps -ef | grep etcd
#把etcd相關證書檔案和命令檔案全部拷貝到另外兩個etcd叢集節點
scp -r /opt/etcd/ root@192.168.150.10:/opt/
scp -r /opt/etcd/ root@192.168.150.10:/opt/

#把etcd服務管理檔案拷貝到另外兩個叢集節點
scp /usr/lib/systemd/system/etcd.service root@192.168.150.10:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.150.15:/usr/lib/systemd/system/

#在etcd叢集的其他節點配置對應的伺服器名和ip地址
vim /opt/etcd/cfg/etcd