github: https://github.com/easzlab/ku…
1. 前期准备
- 一台安装了
Ubuntu
或CentOS
的机器(可以是虚拟机),本文中使用的是Ubuntu 19.10
虚拟机,内存为 2g - 配置基础网络、更新源、SSH 登录等
2. 下载并安装kubeasz
# 下载工具脚本 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
在最后一步会等待较长的时间,最终结果显示成功即可进行下一步。
3. 配置 ssh 免密登录
首先允许 PermitRootLogin:
vim /etc/ssh/sshd_config
找到PermitRootLogin
,将该行配置修改为:
PermitRootLogin yes
随后生成密钥:
ssh-keygen -t rsa -b 2048 -N '' -f ~/.ssh/id_rsa
ssh-copy-id $IP # $IP 为所有节点地址包括自身,按照提示输入 yes 和 root 密码
此处我的宿主机的 IP 为192.168.1.109
,即:
ssh-copy-id 192.168.1.109
4. 安装集群
使用工具脚本容器化运行 kubeasz:
./easzup -S
此处也会需要较长的时间,依然是最后显示成功即可继续下一步:
docker exec -it kubeasz easzctl start-aio
完成后,可以验证一下安装情况:
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 # 验证集群服务状态
5. 安装部署Dashboard
部署 dashboard 主 yaml 配置文件:
kubectl apply -f /etc/ansible/manifests/dashboard/kubernetes-dashboard.yaml
创建可读可写admin
Service Account:
kubectl apply -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml
创建只读 read
Service Account:
kubectl apply -f /etc/ansible/manifests/dashboard/read-user-sa-rbac.yaml
然后,验证安装情况:
# 查看 pod 运行状态
kubectl get pod -n kube-system | grep dashboard
kubernetes-dashboard-7c74685c48-9qdpn 1/1 Running 0 22s
# 查看 dashboard service
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard NodePort 10.68.219.38 <none> 443:24108/TCP 53s
# 查看集群服务
kubectl cluster-info|grep dashboard
kubernetes-dashboard is running at https://192.168.1.1:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
# 查看 pod 运行日志
kubectl logs kubernetes-dashboard-7c74685c48-9qdpn -n kube-system
6. Dashboard
访问控制(不可跳过)
新版的Dashboard
有两步访问控制:
- 通过 api-server 本身安全认证流程
- 通过 dashboard 自带的登录流程
如果不设置访问控制,我们是无法进入 UI 界面的,虽然我们只是想尝试使用一下 kubernetes,但这一步 不可跳过。
我们先从第一步开始。
api-server
安全认证
官方文档提供了两种认证方法,用户名 + 密码访问,以及,证书访问。
证书访问是最安全、也是最可靠的方法,但是其配置十分复杂,为了快速上手使用,我们这次先用用户名 + 密码访问的方式。
首先是用户名和密码的配置,配置文件在/etc/kubernetes/ssl/basic-auth.csv
,在这里面可以看到初始的账号密码,如果有需要也可以进行修改:
vim /etc/kubernetes/ssl/basic-auth.csv
接着,我们开启访问控制:
docker exec -it kubeasz easzctl basic-auth -s
Dashboard
安全认证
Dashboard
支持两种登录方式:Kubeconfig、令牌(Token),我们这次直接使用令牌登录:
# 创建 Service Account 和 ClusterRoleBinding
kubectl apply -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml
# 获取 Bearer Token,找到输出中‘token:’开头那一行
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
现在可以通过浏览器访问 Dashboard
了,url 可以用如下命令获取:
kubectl cluster-info|grep dashboard
输入令牌,即可完成登录。