1. 程式人生 > >CentOS7環境安裝Kubernetes四部曲之一:標準化機器準備

CentOS7環境安裝Kubernetes四部曲之一:標準化機器準備

通過Rancher安裝Kubernetes的文章前面已經寫過,但那時是需要科學上網才能安裝成功(下載gcr.io/google_containers/XXXXX的映象),本次實戰依舊是用Rancher來安裝Kubernetes,但是會做一些設定,使得不用翻牆也能成功安裝K8S環境,另外,在CentOS7環境下,有些設定如果處理不當也會導致安裝失敗或者加入節點失敗,所以也會在本文中交代清楚;

章節列表

整個《CentOS7環境安裝Kubernetes四部曲》由以下四篇文章組成:
1. 標準化機器準備,不論是master還是node節點,都要先做一些同樣的設定,本章會將這些步驟列出,請參照本章對每一臺機器做同樣的設定;
2. 安裝master,配置模板;
3. 在K8S環境加入機器,並快速部署一個應用作為體驗;
4. 安裝kubectl工具;

版本資訊

本次涉及到的重要軟體的版本資訊如下:
1. 作業系統:CentOS Linux 7 (3.10.0)
2. Docker:1.12.3
3. Kubernetes:v1.8.3

機器資訊

整個環境由兩臺CentOS7的機器組成,如下:

hostname IP地址 作用 記憶體大小
master 192.168.119.129 主控制節點 2G
node1 192.168.119.130 業務節點 4G

接下來的操作是通用的,在master和node1兩臺機器上都要一模一樣的做一遍;
建議以root身份來執行以下操作,或者通過sudo su -

命令獲取root許可權;

檢查hostname

  1. 檢查檔案/etc/hostname,確保master和node1的不一樣,我這邊master的hostname就叫master,node的hostname叫node1;
  2. 修改後需要重啟機器;

檢查hosts

檢查檔案/etc/hosts,確保有hostname和本機IP的配置:
1. 對於master應該有這麼一行:192.168.119.129 master
2. 對於node1應該有這麼一樣:192.168.119.130 node1

IP和DNS

  1. IP地址不能衝突;
  2. 能正常解析域名,執行curl www.baidu.com
    ,可以返回網站的html內容;

防火牆

如果是測試環境就關閉防火牆,如果是生產環境需要做詳細的設定,關閉防火牆的方法如下:
1. 檢視當前防火牆狀態:systemctl status firewalld.service
2. 禁止開機啟動:systemctl disable firewalld.service
3. 關閉防火牆:systemctl stop firewalld.service

關閉SELinux

  1. 開啟檔案/etc/selinux/config,找到SELINUX=xxxxx這行,改為SELINUX=disabled;
  2. 修改後需要重啟機器;

開啟IPV4轉發

  1. 開啟檔案/etc/sysctl.conf,檢查是否有net.ipv4.ip_forward = x這樣的配置;
  2. 如果有就保證x等於1,如果沒有就加一行:net.ipv4.ip_forward = 1
  3. 修改並儲存後,執行命令sysctl -p使配置生效;
  4. 執行命令sysctl -a|grep “ip_forward”,檢視最新的配置,應該有如下內容:
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0

重啟

做完上述步驟後,如果有改動,最好重啟機器,以免有設定未能生效;

關閉Swap交換分割槽

執行命令swapoff -a關閉Swap交換分割槽;

安裝Docker1.2.3版本

什麼版本的Docker才能適配Rancher和Kubernetes?rancher的官網給出了一份列表,請參考:http://rancher.com/docs/rancher/v1.6/zh/hosts/#docker,本文我們使用推薦的1.2.3版本,以下是安裝步驟:
1. 執行命令:

mkdir -p ~/_src \
&& cd ~/_src \
&& wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm \
&& wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.3-1.el7.centos.x86_64.rpm \
&& wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-debuginfo-1.12.3-1.el7.centos.x86_64.rpm \
&& yum localinstall -y docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm docker-engine-1.12.3-1.el7.centos.x86_64.rpm docker-engine-debuginfo-1.12.3-1.el7.centos.x86_64.rpm


2. 設定開機啟動:

systemctl enable docker


3. 啟動docker:

systemctl start docker


4. 執行docker version命令,看到如下資訊:

Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        
 OS/Arch:      linux/amd64

設定Docker映象加速

此時如果用docker pull命令下載映象,本地會連線hub.docker.com網站去下載,耗時較長,因此我們可以設定docker映象加速,使得本地連線去國內映象倉庫下載,映象加速的設定有很多種,本章以阿里雲的設定為例,步驟如下:

  1. 建立目錄:
mkdir -p /etc/docker


2. 設定映象倉庫地址:

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xwx6wxd1.mirror.aliyuncs.com"]
}
EOF


3. 重新載入配置:

systemctl daemon-reload


4. 重啟docker服務:

systemctl restart docker

至此,機器的標準化準備工作已經完成了,經過了上述操作的機器可以直接拿來安裝master,或者作為node加入到kubernetes環境;