乐趣区

使用kubeasz安装K8S集群不受国内网络环境影响

github: https://github.com/easzlab/ku…

1. 前期准备

  • 一台安装了 UbuntuCentOS的机器(可以是虚拟机),本文中使用的是 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 有两步访问控制:

  1. 通过 api-server 本身安全认证流程
  2. 通过 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

输入令牌,即可完成登录。

退出移动版