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