概念
k8s/kubernetes
容器化部署
解決容器編排問題,kubernetes為容器編排軟體的佼佼者
kubernets為一組伺服器叢集
功能
自我修復 一個容器崩潰,另一個容器起來
彈性伸縮 根據需要調整容器數量
服務發現 自動發現的形式找到所需依賴
負載均衡 一起分擔流量
版本回退 新版本有問題,立馬回退到原來的版本
儲存編排 可以根據容器自身的需求自動建立儲存卷
....
k8s元件
k8s為控制節點 和 工作節點組成。
master節點的元件
負責叢集的管理
ApiServer:資源操作的唯一路口 接受命令,管理操作都是通過這個路口
Scheduler:負責根據演算法,把活分給誰幹?
ControllerManager:排程安排幹活
Etcd:監工記錄誰在幹活做了什麼
node節點的元件
負責提供執行環境
kubelet:接受控制節點過來的資訊,安排幹活,控制docker操作
kubeproxy:提供對外訪問,跑了程式訪問程式。
docker:負責操作
用例項nginx來說明元件排程關係
master和node資訊都存在etcd裡來明確控制節點手下有幾個幹活的
讓服務跑在k8s,apiserver接受命令
開始計算服務請求由誰來完成,通過讀node資訊
知道由誰來完成,則使用controller-manager傳送請求
kubelet等著接活的,安排給docker啟動一個prod。(目前prod和docker一回事,都是啟動程式的。prod為容器最小單元)
kubeproxy外面使用者可以訪問nignx了
master:叢集控制節點至少一臺
node:工作負載節點,做事的
pod:kubernets最小儲存單元,容器執行在pod中,一個pod有多個容器(通過控制pod來控制容器進而控制程式)
controller:啟動pod停止pod伸縮pod
service:對外服務的統一路口下面可以維護同一類的多個pod。流量流向誰呢?
label:對pod進行分類同一類pod打上標籤,service通過標籤來控制流量
namespace:隔離pod的執行環境
叢集環境規劃
叢集分兩類一主多從,多主多從
一主多從,伺服器要是當機了怎麼辦?叢集就完全完蛋了。只能是測試環境
多主多從,安全性非常高?搭建麻煩,適合生產環境
minikube 一個用於單節點測試
kubeadm 快速搭建kubernets叢集
二進位制包 依次下載元件編譯安裝,元件之間要產生證照
環境搭建 選用vm虛擬三臺伺服器
能互通網路,修改主機名
注意三臺主機都需要做
1.環境初始化
centos需要在7.5以上
cat /etc/redhat-release
2.測試環境做etchosts的域名解析真實環境推薦使用dns做域名解析
192.168.100.128 master master.example.com
192.168.100.130 node1 node1.example.com
192.168.100.129 node2 node2.example.com
3.叢集時間必須同步,企業裡推薦搭建自己的時間伺服器
systemctl start chronyd
date
4.禁用iptables與firewalld 生產環境防火牆一定要慎重
Kubernetes和Docker會產生大量iptables規則,為了不讓系統規則與之混淆,直接關閉系統的規則
systemctl --now disable firewalld
systemctl stop iptables
systemctl disable iptables
(我沒有iptables)
5.禁用selinux
6.禁用swap分割槽 虛擬記憶體分割槽 實體記憶體使用完了,可以將物理空間虛擬成記憶體。啟用swap裝置會對系統的效能產生非常負面的影響。也可以告訴kubernetes我非要開這個分割槽
7.修改linux核心引數
Kubernetes強制要求你這麼做 新增網橋過濾和地址轉發功能
過載配置
sysctl -p
載入網橋過濾模組
modprobe br_netfilter
檢視網橋過濾模組是否載入成功
8.配置ipvs功能
Service 做介面暴露 負載均衡 反向代理 一種iptables 一種ipvs 相比較ipvs效能明顯高 需要手動載入ipvs模組
安裝ipvsadm ipset
新增shell指令碼,功能為載入模組
[root@master ~]# cat > /etc/sysconfig/modules/ipvs.modules << q
> #!/bin/bash
> modprobe -- ip-vs
> modprobe -- ip_vs_rr
> modprobe -- ip_vs_wrr
> modprobe -- ip_vs_sh
> modprobe -- nf_conntrack_ipv4
> q
為ipvs的內容
檢視對應模組是否載入成功
Centos版本太高導致報錯
modprobe: FATAL: Module nf_conntrack_ipv4 not found in directory /lib/modules/4.18.0-373.el8.x86_64
解決報錯
成功載入模組
注意三臺伺服器都要做
最後重啟
來自黑馬java視訊教程