尝试了好几种方式,想要准备一个k8s的实验集群,都或多或少的遇到了些问题。主要是因为要入门,所以要搭一套环境,但因为还没有入门,搭建过程中遇到问题,就不知如何下手。
在行将放弃之际,kubeasz挽救了我,本文主要记录如何用kubeasz搭建一个allinone的环境
环境准备
其实kubeasz的文档写的非常简单,因为本身搭建过程就是很简单,可参看官方文档
- 一台Linux虚拟机(Ubuntu16.04 server或CentOS 7 Minimal)
- 内存需要2G
- 硬盘30G
安装
下载文件
github的说明文档提供的下载方式,我其实都疑惑了,因为有一个${release}
,并非开箱即食。可以这样做
1
| git clone https://github.com/easzlab/kubeasz.git
|
随后,进入kubeasz目录,使用工具脚本下载
1 2
| $ cd kubeasz $ bash tools/easzup -D
|
安装
下面就是按部就班的运行了,注意,你也不需要提前安装docker,所有的都是自动下载及安装的
- 容器化运行 kubeasz
- 使用默认配置安装 aio 集群
1
| $ docker exec -it kubeasz easzctl start-aio
|
如遇到失败,可再次尝试执行
验证安装
1 2 3 4 5
| $ kubectl version $ kubectl get componentstatus $ kubectl get node $ kubectl get pod --all-namespaces $ kubectl get svc --all-namespaces
|
登陆dashboard
安装完成后,dashboard已经准备好了,只需要获取登陆方式即可。
按照官方文档的说法,登陆dashboard有好几种方式,选择一种即可。如token方式
获取port
按照以上方式安装完成后,默认的port应该是34980,所以,可以访问https://当前IP:34980
,即可登陆dashboard
也可以查看dashboard的端口开放状况
1 2 3 4 5 6 7 8
| 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 30m kube-system heapster ClusterIP 10.68.91.148 <none> 80/TCP 114s kube-system kube-dns ClusterIP 10.68.0.2 <none> 53/UDP,53/TCP,9153/TCP 2m20s kube-system kubernetes-dashboard NodePort 10.68.23.76 <none> 443:34980/TCP 118s kube-system metrics-server ClusterIP 10.68.29.183 <none> 443/TCP 2m13s kube-system traefik-ingress-service NodePort 10.68.226.239 <none> 80:23456/TCP,8080:38858/TCP 105s
|
获取token
1
| $ ls /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml
|
1 2 3 4 5 6 7
| $ kubectl apply -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml
... ==== ca.crt: 1350 bytes namespace: 11 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWRoNjYyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJmZDdjZjc4Mi1hOTM0LTExZTktOTA1Zi0wMDBjMjlhMzc1YmYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.KXFNuuibxRpF7AJHZBRkGgvpiVl4axfGA0A8haLIR3coX0HHPrQph8sO9GKl7C0KP6YXN-43VIxlpDXy-i_UkimxDJRVS08IW4r39Z4HhD-rKFYafQJROMrFG9lcbn1pZWTLBRGsO3lFCI1DyRDC7W_HSb63mgO2IoiQXGhgdhEWc7OnyNfxovkbtQA5xfsVqWqeWE-Dn4Jeo0lFe630I-iREMXPQvF5I7UNJFMJLCgFV0fG8J7__MYBf8xVnYL3ryaMBwKjQxQVsD3IOGS6TAk7RLZzjevySl-pXE1CcE8fosQQwJsOjOoKn5u1LGK3XUkIJR2rOf3jVMoQYYqe1Q
|
踩过的坑
node出于NotReady状态
查看服务状态及相关错误信息
1
| $ journalctl -f -u kubelet
|
最终发现我的内存因为是1G导致运行失败