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 -
檢查hostname
- 檢查檔案/etc/hostname,確保master和node1的不一樣,我這邊master的hostname就叫master,node的hostname叫node1;
- 修改後需要重啟機器;
檢查hosts
檢查檔案/etc/hosts,確保有hostname和本機IP的配置:
1. 對於master應該有這麼一行:192.168.119.129 master
2. 對於node1應該有這麼一樣:192.168.119.130 node1
IP和DNS
- IP地址不能衝突;
- 能正常解析域名,執行curl www.baidu.com
防火牆
如果是測試環境就關閉防火牆,如果是生產環境需要做詳細的設定,關閉防火牆的方法如下:
1. 檢視當前防火牆狀態:systemctl status firewalld.service
2. 禁止開機啟動:systemctl disable firewalld.service
3. 關閉防火牆:systemctl stop firewalld.service
關閉SELinux
- 開啟檔案/etc/selinux/config,找到SELINUX=xxxxx這行,改為SELINUX=disabled;
- 修改後需要重啟機器;
開啟IPV4轉發
- 開啟檔案/etc/sysctl.conf,檢查是否有net.ipv4.ip_forward = x這樣的配置;
- 如果有就保證x等於1,如果沒有就加一行:net.ipv4.ip_forward = 1
- 修改並儲存後,執行命令sysctl -p使配置生效;
- 執行命令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映象加速,使得本地連線去國內映象倉庫下載,映象加速的設定有很多種,本章以阿里雲的設定為例,步驟如下:
- 建立目錄:
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環境;