kubeasz安裝單節點K8S
一,下載文件
# 下載工具腳本easzup,舉例使用kubeasz版本2.0.2
export release=2.0.2
curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup
chmod +x ./easzup
# 使用工具腳本下載
./easzup -D
上述腳本運行成功后,所有文件(kubeasz代碼、二進制、離線鏡像)均已整理好放入目錄/etc/ansible
/etc/ansible
包含 kubeasz 版本為 ${release} 的發布代碼/etc/ansible/bin
包含 k8s/etcd/docker/cni 等二進制文件/etc/ansible/down
包含集群安裝時需要的離線容器鏡像/etc/ansible/down/packages
包含集群安裝時需要的系統基礎軟件
二,配置 ssh 免密登錄
三,安裝集群
- 3.1 容器化運行 kubeasz
./easzup -S
- 3.2 使用默認配置安裝 aio 集群
docker exec -it kubeasz easzctl start-aio
備注:
如遇到以下問題
需要更改ansible腳本
/etc/ansible/roles/docker/tasks/main.yml
更改為如下內容
- name: 獲取是否已經安裝containerd
shell: 'systemctl status containerd|grep Active || echo "NOT FOUND"'
register: containerd_status
- name: 獲取是否運行名為'kubeasz'的容器
shell: 'systemctl status docker|grep Active && docker ps|grep kubeasz || echo "NOT FOUND"'
register: install_info
tags: upgrade_docker, download_docker
刪除校驗dokker狀態的task
四,驗證安裝
如果提示kubectl: command not found,退出重新ssh登錄一下,環境變量生效即可
$ kubectl version # 驗證集群版本
$ kubectl get componentstatus # 驗證 scheduler/controller-manager/etcd等組件狀態
$ kubectl get node # 驗證節點就緒 (Ready) 狀態
$ kubectl get pod --all-namespaces # 驗證集群pod狀態,默認已安裝網絡插件、coredns、metrics-server等
$ kubectl get svc --all-namespaces # 驗證集群服務狀態
root@wuzs:/home/wuzs $ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:32:14Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
root@wuzs:/home/wuzs $ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:32:14Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
root@wuzs:/home/wuzs $ kubectl get componentstatus
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
root@wuzs:/home/wuzs $ kubectl get node
NAME STATUS ROLES AGE VERSION
192.168.5.131 Ready master 12m v1.15.0
root@wuzs:/home/wuzs $ kubectl get pod --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-797455887b-5svxk 1/1 Running 1 11m
kube-system coredns-797455887b-pvhtj 1/1 Running 1 11m
kube-system heapster-5f848f54bc-f9xp9 1/1 Running 0 11m
kube-system kube-flannel-ds-amd64-kqnm7 1/1 Running 0 12m
kube-system kubernetes-dashboard-5c7687cf8-rv487 1/1 Running 0 11m
kube-system metrics-server-85c7b8c8c4-cdp7z 1/1 Running 0 11m
kube-system traefik-ingress-controller-766dbfdddd-mbqvw 1/1 Running 0 11m
root@wuzs:/home/wuzs $ kubectl get svc --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.68.0.1 <none> 443/TCP 12m
kube-system heapster ClusterIP 10.68.171.164 <none> 80/TCP 11m
kube-system kube-dns ClusterIP 10.68.0.2 <none> 53/UDP,53/TCP,9153/TCP 12m
kube-system kubernetes-dashboard NodePort 10.68.109.232 <none> 443:24816/TCP 11m
kube-system metrics-server ClusterIP 10.68.249.62 <none> 443/TCP 11m
kube-system traefik-ingress-service NodePort 10.68.168.181 <none> 80:23456/TCP,8080:39230/TCP 11m
root@wuzs:/home/wuzs $
五.清理
以上步驟創建的K8S開發測試環境請盡情折騰,碰到錯誤盡量通過查看日志、上網搜索、提交issues
等方式解決;當然你也可以清理集群后重新創建。
在宿主機上,按照如下步驟清理
- 1.清理集群
docker exec -it kubeasz easzctl destroy
或docker exec -it kubeasz ansible-playbook /etc/ansible/99.clean.yml
- 2.清理管理節點
- 清理運行的容器
easzup -C
- 清理容器鏡像
docker system prune -a
- 停止docker服務
systemctl stop docker
- 刪除下載文件
rm -rf /etc/ansible /etc/docker /opt/kube
- 刪除docker文件
- 清理運行的容器
$ umount /var/run/docker/netns/default
$ umount /var/lib/docker/overlay
$ rm -rf /var/lib/docker /var/run/docker
上述清理腳本執行成功后,建議重啟節點,以確保清理殘留的虛擬網卡、路由等信息。
原文:https://github.com/easzlab/kubeasz/blob/master/docs/setup/quickStart.md