#夏日挑战赛# kubernetes集群搭建 原创 精华
简介
学习k8s前建议先学习docker容器及k8s基础知识,有助于理解,使用k8s环境有很多方式,可以用minikube快速试用,也可以通过在线环境进行学习https://www.katacoda.com/courses/kubernetes
本文主要介绍模拟生产环境多节点的k8s集群搭建过程
1. 准备3台虚拟机节点
本示例节点都选用centos7操作系统环境
具体安装方式参考文章
http://www.hushowly.com/articles/1683
1.centos7-1(主节点)
分配的IP为:192.168.56.201
2.centos7-2(工作节点)
分配的IP为:192.168.56.202
3.centos7-3(工作节点)
分配的IP为:192.168.56.203
2. docker安装
集群搭建好后,需要为每个节点装docker环境,docker安装有好几种方案,此处采用最简单的官方的sh安装方案
2.1 安装docker
2.2 启动docker服务
3. 安装三架马车
注:集群各节点都需要安装此工具
- kubeadm
Kubeadm用于快速部署Kubernetes集群工具,提供kubeadm init和kubeadm join - kubelet
运行在cluster所有节点上,负责启动POD和容器 - kubectl
kubenetes命令行工具,通过kubectl远程或本机方式操作部署和管理应用,查看各种资源,创建,删除和更新组件
说明:以下都是基于centos安装和配置,如果是其它操作系统有此许差异,具体可参考官网
官网安装说明 https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
3.1 安装源
3.2 Set SELinux in permissive mode
3.3 安装
4 初始化集群
4.1 初始化master节点
也可以通过配置文件初始化,可以方便制定更多的参数
参数说明:
- image-repository 设置镜像源,因为国内网络,必须设置一个可用的镜源
- apiserver-advertise-address 通过该 ip 地址向集群其他节点公布 api server 的信息,必须能够被其他节点访问
- pod-network-cidr 指定pod网络地址范围
- service-cidr 指定service网络地址范围
4.1.1 遇到错误1
- 解决:需要关闭swap
4.1.2 遇到错误2
- 修改docker配置
- 重启docker服务
4.1.3 遇到错误3
处理办法:
4.1.4 遇到错误4
处理办法:
4.2 集群master节点初始化成功
4.6 根据成功提示配置kubectl
4.7 测试kubectl命令
4.8 记录集群加入join地址
其它工作节点需要通过此命令加入到集群中
注:需要等网络插件成功安装,才能正常加入集群
5. 安装网络插件
5.1 查看master节点组件状态
我们发现,因为corednspod没有启动,因为缺少网络pod
5.2 安装网络插件
k8s网络插件很多,此处选择flannel
- 5.2.1 部署flannel网络
在线方式:
备注:有时网络问题无法下载,请切换网络试下
离线方式:
想办法下载kube-flannel.yml到本地
遇到问题1:
解决: 配置KUBECONFIG环境变量
因为kubectl命令需要使用kubernetes-admin来运行,所以需要通过KUBECONFIG找配置文件
5.3 检查网络插件状态(网络组件启动要一会)
从以下看出,网络插件和corednspod都运行正常了
6. 加入工作节点到集群
前提:各工作节点要已安装docker和三架马车相关工具,各工作节点和master是网络是互通的
6.1 获取集群加入join命令
两种方式获取
- 通过以上4.8章节master节点集群初始成功后记录join地址
2.在master节点再次执行以下命令获取
6.1 完成工作节点加入集群
在相应的工作节点使用root用户执行以下命令:
问题:有可能失败,参考以上4.2-4.4的错误处理
- 未启动docker服务
- 禁用swap
工作节点加入集群成功结果:
6.2 查看节点集群状态
回到master节点执行以下命令,查看node加入状态
7. 体验k8s上应用部署
开启命令补全功能,方便命令输入
7.1 创建部署
7.2 发布应用
参数说明:
- –type = NodePort 指定 Service 的类型
7.2 查看应用的外部仿问地址
从以上输入PORT中看出,hello-echo对应的外部端口为31038
7.3 仿问发布的应用
8. 安装dashboard
https://kubernetes.io/zh/docs/tasks/access-application-cluster/web-ui-dashboard/
dashboard 可以通过kubectl proxy和NodePort方式对外开放,因为proxy只能在本机仿问,所以以下介绍NodePort方式
8.1 下载dashboard的yaml
备注:有时网络问题无法下载,请切换网络试下
8.2 修改recommended.yaml服务暴露方式
暴露到端口: 30443
8.3. 部署dashboard
注:需要等待一会的时间,dashboard相关镜像拉取和容器初始化费点时间,可以使用kubectl get pods --all-namespaces查看部署状态
8.4. 仿问dashboard
注意使用https方式仿问
dashboard正常启动了,但是需要身份验证才能登陆
8.5 创建帐号得到令牌
注: 请在控制面板所在机器操作
- 创建account.yaml
- 执行创建
- 获取admin-user用户的令牌
- 登陆dashboard
厉害,高手!
送你两个字:牛批!
好东西,收了
很不错给力
很不错,赞起!
666
学习了 小编有点刁
厉害了,牛批!
实用,收藏了!
学习学习