0%

k8s环境安装之差点儿我就放弃了

尝试了好几种方式,想要准备一个k8s的实验集群,都或多或少的遇到了些问题。主要是因为要入门,所以要搭一套环境,但因为还没有入门,搭建过程中遇到问题,就不知如何下手。
在行将放弃之际,kubeasz挽救了我,本文主要记录如何用kubeasz搭建一个allinone的环境

环境准备

其实kubeasz的文档写的非常简单,因为本身搭建过程就是很简单,可参看官方文档

  1. 一台Linux虚拟机(Ubuntu16.04 server或CentOS 7 Minimal)
  2. 内存需要2G
  3. 硬盘30G

安装

下载文件

github的说明文档提供的下载方式,我其实都疑惑了,因为有一个${release},并非开箱即食。可以这样做

1
git clone https://github.com/easzlab/kubeasz.git

随后,进入kubeasz目录,使用工具脚本下载

1
2
$ cd kubeasz
$ bash tools/easzup -D

安装

下面就是按部就班的运行了,注意,你也不需要提前安装docker,所有的都是自动下载及安装的

  1. 容器化运行 kubeasz
1
$ bash tools/easzup -S
  1. 使用默认配置安装 aio 集群
1
$ docker exec -it kubeasz easzctl start-aio

如遇到失败,可再次尝试执行

验证安装

1
2
3
4
5
$ 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 # 验证集群服务状态

登陆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
  • 获取token
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导致运行失败