快速安裝k3s kubernetes集群
K3s 是 Rancher 發布的經過完全認證的 Kubernetes 發行版。K3s 易于使用且更輕量,全部組件都打包在了一個二進制文件里。并且這個二進制文件小于 100 MB。
下面介紹在三臺centos7服務器上快速搭建k3s Kubernetes集群。
基礎環境
安裝MySQL 5.7數據庫
rancher01節點安裝mysql,安裝方法參考:centos7安裝mysql
在mysql中創建k3s數據庫。
create database k3s;
安裝并啟動k3s Server集群
以root用戶,在rancher01,rancher02,rancher03三個節點先后執行以mysql數據庫信息、token為基本配置的k3s Server安裝和啟動腳本,具體如下所示:
其中,–token表示自定義token配置
–datastore-endpoint表示mysql數據庫連接信息
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \ --token=ABCDEFGHIJK \ --datastore-endpoint="mysql://root:password@tcp(10.0.2.9:3306)/k3s"
確認 K3s 是否創建成功
[root@rancher01 ~]# k3s kubectl get nodes NAME STATUS ROLES AGE VERSION rancher02 Ready control-plane,master 2d v1.22.6+k3s1 rancher01 Ready control-plane,master 2d v1.22.6+k3s1 rancher03 Ready control-plane,master 2d v1.22.6+k3s1
保存并使用 kubeconfig 文件
在每個 Rancher Server 節點上安裝 K3s 時,會在節點上/etc/rancher/k3s/k3s.yaml位置創建一個kubeconfig文件。該文件包含用于完全訪問集群的憑據,您應該將此文件保存在安全的位置。
要使用此kubeconfig文件,
安裝 Kubernetes 命令行工具kubectl。
將文件/etc/rancher/k3s/k3s.yaml復制并保存到本地計算機上的~/.kube/config文件中。
在這個 kubeconfig 文件中,server參數為 localhost。您需要手動更改這個地址為負載均衡器的 DNS,并且指定端口 6443。(Kubernetes API Server 的端口為 6443,Rancher Server 的端口為 80 和 443。)以下是一個示例k3s.yaml:
結果: 您現在可以使用kubectl來管理您的 K3s 集群。如果您有多個 kubeconfig 文件,可以在使用kubectl時通過傳遞文件路徑來指定要使用的 kubeconfig 文件:
kubectl --kubeconfig ~/.kube/config/k3s.yaml get pods --all-namespaces
有關kubeconfig文件的更多信息,請參考 K3s 集群訪問或官方 Kubernetes 文檔中關于使用kubeconfig文件訪問集群的部分。
Helm Chart 安裝 Rancher
Rancher 使用 Kubernetes 的 Helm 軟件包管理器安裝。Helm Charts 為 Kubernetes YAML 清單文檔提供了模板語法。
有了 Helm,我們可以創建可配置的部署,而不只是使用靜態文件。
在https://github.com/helm/helm/releases中下載helm,并復制到/usr/sbin目錄下
使用helm repo add命令添加含有 Rancher Chart 的 Helm Chart 倉庫。
請將命令中的
latest: 建議在嘗試新功能時使用。
stable: 建議在生產環境中使用。(推薦)
alpha: 未來版本的實驗性預覽。
下面以latest為例:
helm repo add rancher-latest http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/latest
為 Rancher 創建 Namespace
我們需要定義一個 Kubernetes Namespace,在 Namespace 中安裝由 Chart 創建的資源。這個命名空間的名稱為 cattle-system:
kubectl create namespace cattle-system
選擇你的 SSL 選項
Rancher Server 默認需要 SSL/TLS 配置來保證訪問的安全性。
你可以從以下三種證書來源中選擇一種,證書將用來在 Rancher Server 中終止 TLS:
Rancher 生成的 TLS 證書: 在這種情況下,你需要在集群中安裝 cert-manager。 Rancher 利用 cert-manager 簽發并維護證書。Rancher 將生成自己的 CA 證書,并使用該 CA 簽署證書。然后 cert-manager 負責管理該證書。
Let’s Encrypt: Let’s Encrypt 選項也需要使用 cert-manager。但是,在這種情況下,cert-manager 與 Let’s Encrypt 的特殊頒發者相結合,該頒發者執行獲取 Let’s Encrypt 頒發的證書所需的所有操作(包括請求和驗證)。此配置使用 HTTP 驗證(HTTP-01),因此負載均衡器必須具有可以從公網訪問的公共 DNS 記錄。
使用你已有的證書: 此選項使你可以使用自己的權威 CA 頒發的證書或自簽名 CA 證書。 Rancher 將使用該證書來保護 WebSocket 和 HTTPS 流量。在這種情況下,你必須上傳名稱分別為tls.crt和tls.key的 PEM 格式的證書以及相關的密鑰。如果使用私有 CA,則還必須上傳該 CA 證書。這是由于你的節點可能不信任此私有 CA。 Rancher 將獲取該 CA 證書,并從中生成一個校驗和,各種 Rancher 組件將使用該校驗和來驗證其與 Rancher 的連接。
以已有證書為例
使用 一鍵生成 ssl 自簽名證書腳本 來快速生成符合 rancher 要求的自簽名證書。
在此選項中,將使用你自己的證書來創建 Kubernetes secret,以供 Rancher 使用。
運行這個命令時,hostname 選項必須與服務器證書中的 Common Name 或 Subject Alternative Names 條目匹配,否則 Ingress controller 將無法正確配置。
盡管技術上僅需要Subject Alternative Names中有一個條目,但是擁有一個匹配的 Common Name 可以最大程度的提高與舊版瀏覽器/應用程序的兼容性。
如果你想檢查證書是否正確,請查看如何在服務器證書中檢查 Common Name 和 Subject Alternative Names。
如上所述,為你的證書設置適當的hostname。
將replicas設置為 Rancher 部署所使用的復制數量。默認為 3;如果你的集群中少于 3 個節點,你應填寫實際節點數量。
設置ingress.tls.source為secret。
要安裝一個特定的 Rancher 版本,使用--version 標志,例如:--version 2.3.6。
如果你安裝的是 alpha 版本,Helm 要求在命令中加入--devel選項。
helm install rancher rancher-latest/rancher \ --namespace cattle-system \ --set hostname=rancher02.com \ --set replicas=3 \ --set ingress.tls.source=secret
添加 TLS Secret(千萬不要遺漏該步):現在已經部署了 Rancher,還需參考添加 TLS Secret 發布證書文件,以便 Rancher 和 ingress 控制器可以使用它們。
注意: 可以使用 一鍵生成 ssl 自簽名證書腳本 來快速生成符合 rancher 要求的自簽名證書。該腳本會自動生成本文中所需要的 tls.crt、tls.key 和 cacerts.pem
只有當我們在 cattle-system 命名空間,將自簽名證書和對應密鑰配置到 tls-rancher-ingress 的密文中,Kubernetes 才會為 Rancher 創建所有的對象和服務。
將服務器證書和任何所需的中間證書合并到名為 tls.crt 的文件中,將您的證書密鑰拷貝到名稱為 tls.key 的文件中。
例如,acme.sh在fullchain.cer文件中提供了服務器證書和中間證書。在這種情況下,您應該將fullchain.cer文件重命名為tls.crt,將證書秘鑰文件重命名為tls.key 。
使用 kubectl 創建 tls 類型的密文。
kubectl -n cattle-system create secret tls tls-rancher-ingress \ --cert=tls.crt \ --key=tls.key
提示: 如果您想要更換證書,您可以使用 kubectl -n cattle-system delete secret tls-rancher-ingress 來刪除 tls-rancher-ingress 密文,之后使用上面的命令創建一個新的密文。如果您使用的是私有 CA 簽發的證書,僅當新證書與當前證書是由同一個 CA 簽發的,才可以替換。
網頁訪問rancher
初始化訪問rancher時需要設置登錄密碼,可使用隨機密碼或者自定義密碼。
參考文章
使用 RKE 安裝 Kubernetes | Rancher文檔
使用外部數據庫實現高可用安裝 | Rancher文檔
MySQL安裝 - 從大數據到人工智能 (lrting.top)
Kubernetes
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。