为什么要学习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
为保证无残留,请重启服务器
参考文档
完结撒花
Kubernetes
使得应用的启动、迁移、部署变得简单又安全。
不必担心应用迁移后工作出现问题,也不用担心一台服务器无法应付突发的用户量。
需要注意的是,你的应用最好使用微服务架构进行开发,因为微服务应用比单体应用更适合做容器化。
不要为了单纯的使用Kubernetes
而引入,要看你的系统规模是否值得去用,否则可能适得其反,毕竟Kubernetes
的学习是需要一定成本。