溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

『高級篇』docker之kubernetes基礎集群部署(上)(33)

發(fā)布時間:2020-09-13 01:48:06 來源:網絡 閱讀:202 作者:IT人故事 欄目:云計算

原創(chuàng)文章,歡迎轉載。轉載請注明:轉載自IT人故事會,謝謝!
原文鏈接地址:『高級篇』docker之kubernetes基礎集群部署(上)(33)

這次繼續(xù)集群的部署simple版本。源碼:https://github.com/limingios/msA-docker k8s分支和https://github.com/limingios/kubernetes-starter

『高級篇』docker之kubernetes基礎集群部署(上)(33)

基礎集群部署 - kubernetes-simple

部署ETCD(主節(jié)點)

簡介

  ETCD保證了數據的存儲,保證了數據的高可用,還有數據的一致性,它跟zookeeper類似。kubernetes需要存儲很多東西,像它本身的節(jié)點信息,組件信息,還有通過kubernetes運行的pod,deployment,service等等。都需要持久化。etcd就是它的數據中心。生產環(huán)境中為了保證數據中心的高可用和數據的一致性,一般會部署最少三個節(jié)點。我們這里以學習為主就只在主節(jié)點部署一個實例。

如果你的環(huán)境已經有了etcd服務(不管是單點還是集群),可以忽略這一步。前提是你在生成配置的時候填寫了自己的etcd endpoint哦~

部署

etcd的二進制文件和服務的配置我們都已經準備好,現在的目的就是把它做成系統(tǒng)服務并啟動。(這個是要在主節(jié)點操作的,在server01上)

#把服務配置文件copy到系統(tǒng)服務目錄
cp ~/kubernetes-starter/target/master-node/etcd.service /lib/systemd/system/
#enable服務
systemctl enable etcd.service
#創(chuàng)建工作目錄(保存數據的地方)
mkdir -p /var/lib/etcd
# 啟動服務
service etcd start
# 查看服務日志,看是否有錯誤信息,確保服務正常
journalctl -f -u etcd.service
# 查看在線的端口2379 2380 
netstat -ntlp

『高級篇』docker之kubernetes基礎集群部署(上)(33)

查看etcd的配置

WorkingDirectory 工作目錄配置文件存在這個路徑下
ExecStart 執(zhí)行的命令
name 名稱
listen-client-urls 監(jiān)聽節(jié)點
advertise-client-urls 建議其他人訪問的地址
data-dir 數據目錄

vi /lib/systemd/system/etcd.service 

『高級篇』docker之kubernetes基礎集群部署(上)(33)

PS: 提示start etcd 已經啟動

部署APIServer(主節(jié)點)

簡介

kube-apiserver是Kubernetes最重要的核心組件之一,主要提供以下的功能

  • 提供集群管理的REST API接口,包括認證授權(我們現在沒有用到)數據校驗以及集群狀態(tài)變更等
  • 提供其他模塊之間的數據交互和通信的樞紐(其他模塊通過API Server查詢或修改數據,只有API Server才直接操作etcd)

生產環(huán)境為了保證apiserver的高可用一般會部署2+個節(jié)點,在上層做一個lb做負載均衡,比如haproxy。由于單節(jié)點和多節(jié)點在apiserver這一層說來沒什么區(qū)別,所以我們學習部署一個節(jié)點就足夠啦

部署

APIServer的部署方式也是通過系統(tǒng)服務。部署流程跟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

『高級篇』docker之kubernetes基礎集群部署(上)(33)

重點配置說明

[Unit]
Description=Kubernetes API Server
...
[Service]
#可執(zhí)行文件的位置
ExecStart=/home/michael/bin/kube-apiserver \
#非安全端口(8080)綁定的監(jiān)聽地址 這里表示監(jiān)聽所有地址
--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 \
...

『高級篇』docker之kubernetes基礎集群部署(上)(33)

部署ControllerManager(主節(jié)點)

簡介

Controller Manager由kube-controller-manager和cloud-controller-manager組成,是Kubernetes的大腦,它通過apiserver監(jiān)控整個集群的狀態(tài),并確保集群處于預期的工作狀態(tài)。
kube-controller-manager由一系列的控制器組成,像Replication Controller控制副本,Node Controller節(jié)點控制,Deployment Controller管理deployment等等
cloud-controller-manager在Kubernetes啟用Cloud Provider的時候才需要,用來配合云服務提供商的控制

controller-manager、scheduler和apiserver 三者的功能緊密相關,一般運行在同一個機器上,我們可以把它們當做一個整體來看,所以保證了apiserver的高可用即是保證了三個模塊的高可用。也可以同時啟動多個controller-manager進程,但只有一個會被選舉為leader提供服務。

部署

通過系統(tǒng)服務方式部署

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 \
#對外服務的監(jiān)聽地址,這里表示只有本機的程序可以訪問它
--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= \
...

『高級篇』docker之kubernetes基礎集群部署(上)(33)

PS:下次繼續(xù)把k8s的基礎搭建完成。這個坑很大,注意自己的符號標點,我就是把端口簽名的冒號寫成了點。找了4個小時各種試才發(fā)現的。里面有寫錯的,192.168.1.101.2379 改成192.168.1.101:2379

『高級篇』docker之kubernetes基礎集群部署(上)(33)

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI