快速搭建kubernetes+kubernetes dashboard学习环境-单站环境

忘忧 2022年01月18日 5,216次浏览

为什么要学习kubernetes

使用Kubernetes的理由很多,最重要的理由是,IT 行业从来都是由新技术驱动的。

当前,Docker 容器化技术已经被很多公司采用,从单机走向集群已成为必然。云计算的蓬勃发展正在加速这一进程。Kubernetes作为当前被业界广泛认可和看好的基于 Docker 的大规模容器化分布式系统解决方案,得到了以谷歌为首的 IT 巨头们的大力宣传和维持推进。

主要优点

  • 一个平台搞定所有
  • 云环境无缝迁移
  • 高效的利用资源
  • 开箱即用的自动缩放能力
  • 使 CI/CD 更简单
  • 可靠性

Kubernetes学习地址

学习地址

具体步骤

Kubeasz介绍

项目致力于提供快速部署高可用k8s集群的工具, 同时也努力成为k8s实践、使用的参考书;基于二进制方式部署和利用ansible-playbook实现自动化;既提供一键安装脚本, 也可以根据安装指南分步执行安装各个组件

地址

实现

测试机 CentOS 7.6

请使用root用户进行以下命令的操作

下载命令行工具

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
export release=3.0.0
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown

下载资源包

./ezdown -D

安装单点集群

./ezdown -S
docker exec -it kubeasz ezctl start-aio

验证安装

如果提示kubectl: command not found,退出重新ssh登录一下,环境变量生效即可

$ kubectl version         # 验证集群版本     
$ kubectl get node        # 验证节点就绪 (Ready) 状态
$ kubectl get pod -A      # 验证集群pod状态,默认已安装网络插件、coredns、metrics-server等
$ kubectl get svc -A      # 验证集群服务状态

dashboard

# 查看pod 运行状态
kubectl get pod -n kube-system | grep dashboard
dashboard-metrics-scraper-856586f554-l6bf4   1/1     Running   0          35m
kubernetes-dashboard-698d4c759b-67gzg        1/1     Running   0          35m

# 查看dashboard service
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard   NodePort    10.68.219.38   <none>        443:24108/TCP                   53s

# 查看pod 运行日志
kubectl logs -n kube-system kubernetes-dashboard-698d4c759b-67gzg

获取登录令牌

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

登录地址

因为dashboard 作为k8s 原生UI,能够展示各种资源信息,甚至可以有修改、增加、删除权限,所以有必要对访问进行认证和控制,为演示方便这里使用 https://NodeIP:NodePort 方式访问 dashboard,支持两种登录方式:Kubeconfig、令牌(Token)

注意: 使用chrome浏览器访问 https://NodeIP:NodePort 可能提示安全风险无法访问,可以换firefox浏览器设置安全例外,继续访问。

一定要https

启用 kubectl 自动补全

yum -y install epel-release
yum install bash-completion bash-completion-extras -y
locate bash_completion.sh
updatedb
source /etc/profile.d/bash_completion.sh
logout //登出后重新登录
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash >/etc/bash_completion.d/kubectl

清理环境

在宿主机上,按照如下步骤清理

  • 清理集群 docker exec -it kubeasz ezctl destroy default
  • 清理运行的容器 ./ezdown -C
  • 清理容器镜像 docker system prune -a
  • 停止docker服务 systemctl stop docker
  • 删除docker文件
 umount /var/run/docker/netns/default
 umount /var/lib/docker/overlay
 rm -rf /var/lib/docker /var/run/docker

为保证无残留,请重启服务器

参考文档

安装
dashboard

完结撒花

Kubernetes使得应用的启动、迁移、部署变得简单又安全。

不必担心应用迁移后工作出现问题,也不用担心一台服务器无法应付突发的用户量。

需要注意的是,你的应用最好使用微服务架构进行开发,因为微服务应用比单体应用更适合做容器化。

不要为了单纯的使用Kubernetes而引入,要看你的系统规模是否值得去用,否则可能适得其反,毕竟Kubernetes的学习是需要一定成本。