快速體驗k8s叢集的測試、開發環境--allinone部署

giserinchina發表於2018-12-27

快速指南

以下為快速體驗k8s叢集的測試、開發環境--allinone部署,國內環境下覺得比官方的minikube方便、簡單很多。

1.基礎系統配置

  • 推薦記憶體2G/硬碟30G以上
  • 最小化安裝Ubuntu 16.04 server或者CentOS 7 Minimal
  • 配置基礎網路、更新源、SSH登陸等

2.安裝依賴工具

Ubuntu 16.04 請執行以下指令碼:

# 文件中指令碼預設均以root使用者執行
# 安裝依賴工具
apt-get install python2.7 git python-pip
# Ubuntu16.04可能需要配置以下軟連線
ln -s /usr/bin/python2.7 /usr/bin/python

CentOS 7 請執行以下指令碼:

# 文件中指令碼預設均以root使用者執行
# 安裝 epel 源
yum install epel-release -y
# 安裝依賴工具
yum install git python python-pip -y

3.ansible安裝及準備

# 安裝ansible (國內如果安裝太慢可以直接用pip阿里雲加速)
#pip install pip --upgrade
#pip install ansible
pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 配置ansible ssh金鑰登陸
ssh-keygen -t rsa -b 2048 回車 回車 回車
ssh-copy-id $IP #$IP為本虛機地址,按照提示輸入yes 和root密碼

異常

paramiko 2.4.2 has requirement cryptography>=1.5, but you'll have cryptography 1.3.1 which is incomp

 

Ubuntu 16.04中,如果出現以下錯誤:

Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

/usr/bin/pip做以下修改:

#原始碼
from pip import main
if __name__ == '__main__':
    sys.exit(main())

#修改後
from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

4.安裝kubernetes叢集

  • 4.1 下載專案原始碼
# 方式一:使用git clone
git clone https://github.com/gjmzj/kubeasz.git
mkdir -p /etc/ansible
mv kubeasz/* /etc/ansible
# 方式二:從釋出頁面 https://github.com/gjmzj/kubeasz/releases 下載原始碼解壓到同樣目錄
  • 4.2a 下載二進位制檔案
    請從分享的百度雲連結,下載解壓到/etc/ansible/bin目錄,如果你有合適網路環境也可以按照/down/download.sh自行從官網下載各種tar包
tar zxvf k8s.1-9-8.tar.gz	# 以安裝k8s v1.9.8為例
mv bin/* /etc/ansible/bin
  • 4.2b [可選]下載離線docker映象
    伺服器使用內部yum源/apt源,但是無法訪問公網情況下,請下載離線docker映象完成叢集安裝;從百度雲盤把basic_images_kubeasz_x.y.tar.gz 下載解壓到/etc/ansible/down 目錄
tar zxvf basic_images_kubeasz_0.2.tar.gz -C /etc/ansible/down
  • 4.3 配置叢集引數

    • 4.3.1 必要配置:cd /etc/ansible && cp example/hosts.allinone.example hosts, 然後實際情況修改此hosts檔案
    • 4.3.2 可選配置,初次使用可以不做修改,詳見配置指南
    • 4.3.3 驗證ansible 安裝:ansible all -m ping 正常能看到節點返回 SUCCESS
  • 4.4 開始安裝 如果你對叢集安裝流程不熟悉,請閱讀專案首頁 安裝步驟 講解後分步安裝,並對 每步都進行驗證

# 分步安裝
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
ansible-playbook 03.docker.yml
ansible-playbook 04.kube-master.yml
ansible-playbook 05.kube-node.yml
ansible-playbook 06.network.yml
ansible-playbook 07.cluster-addon.yml 
# 一步安裝
#ansible-playbook 90.setup.yml
  • [可選]對叢集節點進行作業系統層面的安全加固 ansible-playbook roles/os-harden/os-harden.yml,詳情請參考os-harden專案

5.驗證安裝

如果提示kubectl: command not found,退出重新ssh登陸一下,環境變數生效即可

kubectl version
kubectl get componentstatus # 可以看到scheduler/controller-manager/etcd等元件 Healthy
kubectl cluster-info # 可以看到kubernetes master(apiserver)元件 running
kubectl get node # 可以看到單 node Ready狀態
kubectl get pod --all-namespaces # 可以檢視所有叢集pod狀態,預設已安裝網路外掛、coredns、metrics-server等
kubectl get svc --all-namespaces # 可以檢視所有叢集服務狀態

6.安裝主要元件

# 安裝kubedns,預設已整合安裝
#kubectl create -f /etc/ansible/manifests/kubedns
# 安裝dashboard,預設已整合安裝
#kubectl create -f /etc/ansible/manifests/dashboard
  • 登陸 dashboard可以檢視和管理叢集,更多內容請查閱dashboard文件

7.清理叢集

以上步驟建立的K8S開發測試環境請盡情折騰,碰到錯誤儘量通過檢視日誌、上網搜尋、提交issues等方式解決;當然如果是徹底奔潰了,可以清理叢集后重新建立。

ansible-playbook 99.clean.yml

如果出現清理失敗,類似報錯:... Device or resource busy: '/var/run/docker/netns/xxxxxxxxxx',需要手動umount該目錄後清理

$ umount /var/run/docker/netns/xxxxxxxxxx
$ rm -rf /var/run/docker/netns/xxxxxxxxxx

相關文章