1. 程式人生 > >k8s入門系列之叢集安裝篇

k8s入門系列之叢集安裝篇

關於kubernetes元件的詳解介紹,請閱讀上一篇文章《k8s入門系列之介紹篇

Kubernetes叢集安裝部署

•Kubernetes叢集元件:
  - etcd 一個高可用的K/V鍵值對儲存和服務發現系統
  - flannel 實現誇主機的容器網路的通訊
  - kube-apiserver 提供kubernetes叢集的API呼叫
  - kube-controller-manager 確保叢集服務
  - kube-scheduler 排程容器,分配到Node
  - kubelet 在Node節點上按照配置檔案中定義的容器規格啟動容器
  - kube-proxy 提供網路代理服務

•叢集示意圖
  Kubernetes工作模式server-client,Kubenetes Master提供集中化管理Minions。部署1臺Kubernetes Master節點和4臺Minion節點,
 示意圖如下:

•先決條件

如下操作在所有機器執行

1.確保系統已經安裝epel-release源

# yum -y install epel-release

2.關閉防火牆服務,避免與docker容器的防火牆規則衝突。

# systemctl stop firewalld
# systemctl disable firewalld

•安裝配置Kubernetes Master
如下操作在master上執行
1.使用yum安裝etcd和kubernetes-master

# yum -y install etcd kubernetes-master

2.編輯/etc/etcd/etcd.conf檔案

ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"

3.編輯/etc/kubernetes/apiserver檔案

複製程式碼
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT
="--port=8080" KUBELET_PORT="--kubelet-port=10250" KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379" KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota" KUBE_API_ARGS=""
複製程式碼

4.啟動etcd、kube-apiserver、kube-controller-manager、kube-scheduler等服務,並設定開機啟動。

# for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES ; done

5.在etcd中定義flannel網路

# etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'

•安裝配置Kubernetes Node
如下操作在node1、node2、node3、node4上執行
1.使用yum安裝flannel和kubernetes-node

# yum -y install flannel kubernetes-node

2.為flannel網路指定etcd服務,修改/etc/sysconfig/flanneld檔案

FLANNEL_ETCD="http://192.168.30.20:2379"
FLANNEL_ETCD_KEY="/atomic.io/network"

3.修改/etc/kubernetes/config檔案

KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.30.20:8080"

4.按照如下內容修改對應node的配置檔案/etc/kubernetes/kubelet

node1:

複製程式碼
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=192.168.30.21" #修改成對應Node的IP
KUBELET_API_SERVER="--api-servers=http://192.168.30.20:8080" #指定Master節點的API Server
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
複製程式碼

node2:

複製程式碼
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=192.168.30.22" 
KUBELET_API_SERVER="--api-servers=http://192.168.30.20:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
複製程式碼

node3:

複製程式碼
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=192.168.30.23"
KUBELET_API_SERVER="--api-servers=http://192.168.30.20:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
複製程式碼

node4:

複製程式碼
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=192.168.30.24"
KUBELET_API_SERVER="--api-servers=http://192.168.30.20:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
複製程式碼

5.在所有Node節點上啟動kube-proxy,kubelet,docker,flanneld等服務,並設定開機啟動。

# for SERVICES in kube-proxy kubelet docker flanneld;do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES; done

•驗證叢集是否安裝成功
在master上執行如下命令

複製程式碼
[[email protected] ~]# kubectl get node
NAME            STATUS    AGE
192.168.30.21   Ready     1m
192.168.30.22   Ready     1m
192.168.30.23   Ready     1m
192.168.30.24   Ready     1m
複製程式碼

*註釋:上述4個節點正常顯示,狀態為Ready,則說明叢集搭建成功,至於叢集的應用會在後續文章中介紹。

相關推薦

k8s入門系列叢集安裝

關於kubernetes元件的詳解介紹,請閱讀上一篇文章《k8s入門系列之介紹篇》 Kubernetes叢集安裝部署 •Kubernetes叢集元件:   - etcd 一個高可用的K/V鍵值對儲存和服務發現系統   - flannel 實現誇主機的容器網路的通訊  

K8S入門系列叢集二進位制部署--> master(二)

元件版本和配置策略 元件版本 Kubernetes 1.16.2 Docker 19.03-ce Etcd 3.3.17 https://github.com/etcd-io/etcd/releases/ Flanneld 0.11.0 https://github.com/coreos/flannel/r

Jenkins入門系列—— Jenkins安裝與配置

1.下載最新的版本(一個 WAR 檔案)。Jenkins官方網址: http://Jenkins-ci.org/ 2.執行 java -jar jenkins.war 注意:Jenkins 需要執行 Java 5以及以上的版本。 還有一種安裝方式就是將下載的war包檔案部署到 servlet 容器,

openlayers入門開發系列地圖展示

home 分享 技術分享 get .net 系列 image 系統 圖片 GIS之家一直打算寫一個openlayers入門開發系列文章(openlayers目前版本用4.x),只是一直沒抽出時間來整理;本文是openlayers入門開發系列的第一篇:地圖展示篇,後續會持續更

MongoDB入門系列科普

目錄 背景 對比 MongoDB的資料儲存格式 背景 最近公司擴充套件了很多國外客戶,那麼一個很嚴重的問題就是翻譯,對於國外客戶來說,肯定看不懂中文,那就要專案中提供切換各自國家語言的功能。 由於每個專案都是各自寫自己的翻譯,所以這塊比較混亂。對於公司來說,

openlayers入門開發系列熱力圖

本篇的重點內容是利用openlayers實現熱力圖功能,效果圖如下: 實現思路 熱力圖介面設計 //熱力圖 "<div style='height:25px;background:#30A4D5;margin-top:2px;width: 98%;margin-le

大資料入門教程系列Hbase安裝(偽分散式)

本篇文章主要介紹在windows下使用vmware虛擬機器中的Linux(Centons7)下配置安裝Hbase。 簡要步驟: ①、下載Hbase解壓包 ②、安裝zookeeper ③、解壓Hbase,配置環境環境 ④、修改Hbase指令碼檔案hbase-env.sh ⑤、修

openlayers入門開發系列遷徙圖

本篇的重點內容是利用openlayers實現遷徙圖功能,效果圖如下: 實現思路 遷徙圖介面設計 //遷徙圖 "<div style='height:25px;background:#30A4D5;margin-top:10px;width: 98

SpringBoot入門系列第二:logback日誌輸出

日誌在ApplicationContext建立之前載入。 所以不能通過在@Configuration檔案中的@PropertySources來進行配置 Logback:logback-spring.xml, logback-spring.groovy, logback.xml or logback.groov

openlayers入門開發系列聚合圖

本篇的重點內容是利用openlayers實現聚合圖功能,效果圖如下: 實現思路 介面設計 //聚合圖 "<div style='height:25px;background:#30A4D5;margin-top:25px;width: 98%;margin-left

Jenkins入門系列——02第二章 Jenkins安裝與配置

第二章 Jenkins安裝與配置 2 Jenkins安裝 在最簡單的情況下,Jenkins 只需要兩個步驟: 2.執行 java -jar jenkins.war 注意:Jenkins 需要執行 Java 5以及以上的版本。 還有一種安裝方式就是將下載的war包檔案部署到 servlet 容器,然後啟動容

IC設計基礎系列低功耗1:(數字IC)低功耗設計入門(一)——低功耗設計目的與功耗的型別

低功耗設計這個專題整理了好久,有一個月了,有圖有證據:                                然而最近一直有些煩心事、鬱悶事,拖延了一下,雖然現在還是有點煩,但是還是先發表了吧。下面我們就來聊聊低功耗設計吧,由於文章比較長,因此我就不一次

hadoop入門系列三【hadoop的安裝與配置】

在master上執行 #格式化namenode操作 [[email protected] hadoop]$ hdfs namenode -format 15/06/26 19:38:57 INFO namenode.NameNode: STARTUP_MSG:  /****************

openlayers入門開發系列船訊

rup 第一個 record data- wid oms 更新 地圖 red 本篇的重點內容是利用openlayers實現船訊功能,效果圖如下: 實現思路 界面設計 //船訊 "<div style=‘height:25px;backg

rubyselenium 安裝

變量 for win details admin tor nbsp ins navi windows環境 1、先安裝ruby (百度一下就有了) 安裝好後,查詢ruby -v 、 gem -v 2、通過gem-install 安裝selenium gem install

SaltStack學習系列State安裝Nginx+PHP環境

目錄結構 logs pkg lease .rpm mes cto -1 eal 目錄結構 |-- pillar | |-- nginx | | `-- nginx.sls #nginx變量(key:value) | `-- top.sls `-- sa

Jenkins入門系列——01第一章 Jenkins是什麽?

source 每次 servlet容器 生命 .com .net 優點 指紋 順序 第一章 Jenkins是什麽? Jenkins 是一個可擴展的持續集成引擎。 主要用於: l 持續、自動地構建/測試軟件項目。 l 監控一些定時執行的任務。 Jenkins擁有

Centos7 minimal 系列rabbitmq安裝(八)

ref 需要 查看 del kcon start 設置 mis nsh 一、安裝Erlang   由於RabbitMQ依賴Erlang, 所以需要先安裝Erlang。   這種方法網站訪問不了 wget https://packages.erlang-solutions.

docker 系列 docker安裝

fss color 目前 ram 依賴包 san attribute -i 後臺服務 Docker支持以下的CentOS版本 CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提條件 目前,CentOS 僅發行版本中的內核支持

基於nginx+swoole+phalcon+atlas實現的高性能負載均衡集群系列【構建

p12 adb 列表 服務器性能 nodeps devel unit tcl aio 一、簡介   php一直詬病於性能,可對開發者如此友好的語言為什麽不能登上大雅之堂? 於是php一線開發者站了出來。 先有鳥哥優化php引擎,又有rango大神開源swoole。至此,基