『高階篇』docker之kubernetes基礎叢集部署(上)(33)
這次繼續叢集的部署simple版本。
基礎叢集部署 – kubernetes-simple
部署ETCD(主節點)
簡介
ETCD保證了資料的儲存,保證了資料的高可用,還有資料的一致性,它跟zookeeper類似。kubernetes需要儲存很多東西,像它本身的節點資訊,元件資訊,還有通過kubernetes執行的pod,deployment,service等等。都需要持久化。etcd就是它的資料中心。生產環境中為了保證資料中心的高可用和資料的一致性,一般會部署最少三個節點。我們這裡以學習為主就只在主節點部署一個例項。
如果你的環境已經有了etcd服務(不管是單點還是叢集),可以忽略這一步。前提是你在生成配置的時候填寫了自己的etcd endpoint哦~
部署
etcd的二進位制檔案和服務的配置我們都已經準備好,現在的目的就是把它做成系統服務並啟動。(這個是要在主節點操作的,在server01上)
#把服務配置檔案copy到系統服務目錄 cp ~/kubernetes-starter/target/master-node/etcd.service /lib/systemd/system/ #enable服務 systemctl enable etcd.service #建立工作目錄(儲存資料的地方) mkdir -p /var/lib/etcd # 啟動服務 service etcd start # 檢視服務日誌,看是否有錯誤資訊,確保服務正常 journalctl -f -u etcd.service # 檢視線上的埠2379 2380 netstat -ntlp
檢視etcd的配置
WorkingDirectory 工作目錄配置檔案存在這個路徑下
ExecStart 執行的命令
name 名稱
listen-client-urls 監聽節點
advertise-client-urls 建議其他人訪問的地址
data-dir 資料目錄
vi /lib/systemd/system/etcd.service
PS: 提示start etcd 已經啟動
部署APIServer(主節點)
簡介
kube-apiserver是Kubernetes最重要的核心元件之一,主要提供以下的功能
– 提供叢集管理的REST API介面,包括認證授權(我們現在沒有用到)資料校驗以及叢集狀態變更等
– 提供其他模組之間的資料互動和通訊的樞紐(其他模組通過API Server查詢或修改資料,只有API Server才直接操作etcd)
生產環境為了保證apiserver的高可用一般會部署2+個節點,在上層做一個lb做負載均衡,比如haproxy。由於單節點和多節點在apiserver這一層說來沒什麼區別,所以我們學習部署一個節點就足夠啦
部署
APIServer的部署方式也是通過系統服務。部署流程跟etcd完全一樣,不再註釋
cp kubernetes-starter/target/master-node/kube-apiserver.service /lib/systemd/system/ systemctl enable kube-apiserver.service service kube-apiserver start journalctl -f -u kube-apiserver
重點配置說明
[Unit]
Description=Kubernetes API Server
…
[Service]
#可執行檔案的位置
ExecStart=/home/michael/bin/kube-apiserver \
#非安全埠(8080)繫結的監聽地址 這裡表示監聽所有地址
–insecure-bind-address=0.0.0.0 \
#不使用https
–kubelet-https=false \
#kubernetes叢集的虛擬ip的地址範圍
–service-cluster-ip-range=10.68.0.0/16 \
#service的nodeport的埠範圍限制
–service-node-port-range=20000-40000 \
#很多地方都需要和etcd打交道,也是唯一可以直接操作etcd的模組
–etcd-servers=http://192.168.1.102:2379 \
…
部署ControllerManager(主節點)
簡介
Controller Manager由kube-controller-manager和cloud-controller-manager組成,是Kubernetes的大腦,它通過apiserver監控整個叢集的狀態,並確保叢集處於預期的工作狀態。
kube-controller-manager由一系列的控制器組成,像Replication Controller控制副本,Node Controller節點控制,Deployment Controller管理deployment等等
cloud-controller-manager在Kubernetes啟用Cloud Provider的時候才需要,用來配合雲服務提供商的控制
controller-manager、scheduler和apiserver 三者的功能緊密相關,一般執行在同一個機器上,我們可以把它們當做一個整體來看,所以保證了apiserver的高可用即是保證了三個模組的高可用。也可以同時啟動多個controller-manager程序,但只有一個會被選舉為leader提供服務。
部署
通過系統服務方式部署
cp ~/kubernetes-starter/target/master-node/kube-controller-manager.service /lib/systemd/system/ systemctl enable kube-controller-manager.service service kube-controller-manager start journalctl -f -u kube-controller-manager
重點配置說明
[Unit]
Description=Kubernetes Controller Manager
…
[Service]
ExecStart=/home/michael/bin/kube-controller-manager \
#對外服務的監聽地址,這裡表示只有本機的程式可以訪問它
–address=127.0.0.1 \
#apiserver的url
–master=http://127.0.0.1:8080 \
#服務虛擬ip範圍,同apiserver的配置
–service-cluster-ip-range=10.68.0.0/16 \
#pod的ip地址範圍
–cluster-cidr=172.20.0.0/16 \
#下面兩個表示不使用證書,用空值覆蓋預設值
–cluster-signing-cert-file= \
–cluster-signing-key-file= \
…
PS:下次繼續把k8s的基礎搭建完成。這個坑很大,注意自己的符號標點,我就是把埠簽名的冒號寫成了點。找了4個小時各種試才發現的。
已是最新文章