基于easzup一键搭建K8S集群
Github地址:https://github.com/easzlab/kubeasz
本文基于github原作者文章,根据我自己测试的实际情况进行修改
HA architecture
- 注意1:确保各节点时区设置一致、时间同步。
- 注意2:确保在干净的系统上开始安装,不要使用曾经装过kubeadm或其他k8s发行版的环境。
- 注意3:建议操作系统升级到新的稳定内核。
高可用集群所需节点配置如下
角色 | 数量 | 描述 |
---|---|---|
管理节点 | 1 | 运行ansible/easzctl脚本,一般复用master节点 |
etcd节点 | 3 | 注意etcd集群需要1,3,5,7…奇数个节点,一般复用master节点 |
master节点 | 2 | 高可用集群至少2个master节点 |
node节点 | 3 | 运行应用负载的节点,可根据需要提升机器配置/增加节点数 |
部署步骤
本次测试部署的是高可用架构的K8S,所以需要3台以上的虚拟机,我这里使用4台
角色 | 数量 | IP |
---|---|---|
管理节点 | 1 | 10.0.0.10 |
etcd | 1 | 10.0.0.10 |
master节点 | 2 | 10.0.0.10,10.0.0.20 |
node节点 | 2 | 10.0.0.30,10.0.0.40 |
1.基础系统配置
- CPU4核内存2G/硬盘40G
- 系统为
CentOS 7 Minimal
- 需要配置基础网络、更新源、SSH免密登录等
2.在每个节点安装依赖工具
CentOS 7 请执行以下脚本:
1 | # 文档中脚本默认均以root用户执行 |
3.在ansible控制端安装及准备ansible
- 3.1 pip 安装 ansible
1 | # CentOS 7 |
- 3.2 在ansible控制端配置免密码登录
1 | # 更安全 Ed25519 算法 |
4.在ansible控制端编排k8s安装
- 4.0 下载项目源码
- 4.1 下载二进制文件
- 4.2 下载离线docker镜像
推荐使用 easzup 脚本下载 4.0/4.1/4.2 所需文件;运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录/etc/ansible
1 | # 下载工具脚本easzup,举例使用最新版kubeasz版本2.2.1 |
4.3 配置集群参数
- 4.3.1 必要配置:
cd /etc/ansible && cp example/hosts.multi-node hosts
, 然后实际情况修改此hosts文件,附上我测试配置图:
- 4.3.2 验证ansible 安装:
ansible all -m ping
正常能看到节点返回 SUCCESS
- 4.3.1 必要配置:
4.4 开始安装
如果你对集群安装流程不熟悉,请先使用一键安装
1 | # 分步安装 |
1 | # 一步安装 |
4.5 安装完成如图所示
4.6查看K8S是否正常运行
Node,Master节点正常运行
文章作者: 小俊
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小俊丶生活日志!
相关推荐

2023-06-29
Kubernetes常用命令
1. 查看类命令获取节点相应服务的信息 1kubectl get nodes 如果需要按selector名来查找相应的pod信息, 可以通过以下命令查看: 1kubectl get pod --selector name=tomcat 查看K8S集群信息 1kubectl cluster-info 查看各组件信息 1kubectl -s http://localhost:8080 get componentstatuses 查看pods所在的运行节点 1kubectl get pods -o wide 如果需要通过某个命名空间查找节点信息, 可以通过以下命令查看: 1234kubectl get pods -o wide -n kube-system#详解:#-o wide 选项表示展示更多的Pod节点信息#-n <命名空间> 表示查询该命名空间下的Pod节点信息 如果需要查找所有命名空间下的所有Pod信息, 可以通过以下命令: 1234kubectl get pods --all-namespaces#或kubectl get pods -o...

2023-06-29
K8S-部署Dashboard
本文使用的K8S是基于kubeasz一键搭建Github地址:https://github.com/easzlab/kubeasz本文档基于 dashboard 1.10.1版本,k8s版本 1.18.3。 部署新版配置文件参考 https://github.com/kubernetes/dashboard 安装部署 123456# 部署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 验证1234567891011# 查看pod...

2023-06-29
Ingress-http配置
Ingress简介ingress就是从外部访问k8s集群的入口,将用户的URL请求转发到不同的service上。ingress相当于nginx反向代理服务器,它包括的规则定义就是URL的路由信息;它的实现需要部署Ingress controller(比如 traefik ingress-nginx 等),Ingress controller通过apiserver监听ingress和service的变化,并根据规则配置负载均衡并提供访问入口,达到服务发现的作用。 未配置ingress: 集群外部 -> NodePort -> K8S Service 配置ingress: 集群外部 -> Ingress -> K8S Service 注意:ingress 本身也需要部署Ingress controller时使用以下几种方式让外部访问 使用NodePort方式 使用hostPort方式 使用LoadBalancer地址方式 以下讲解基于Traefik,如果想要了解ingress-nginx的原理与实践,推荐阅读博客烂泥行天下的相关文章 部署...

2023-06-29
ingress负载转发端口
配置负载转发 ingress nodeport向集群外暴露 ingress-controller 本身的服务端口(80/443/8080)一般有以下三种方法: 1.部署ingress-controller时使用hostNetwork: true,这样就可以直接使用上述端口,可能与host已listen端口冲突 2.部署ingress-controller时使用LoadBalancer类型服务,需要集群支持LoadBalancer 3.部署ingress-controller时使用nodePort类型服务,然后在集群外使用 haproxy/f5 等配置 virtual server 集群 本文讲解使用 haproxy 配置 ingress的 VS 集群,前提是配置了自建ex-lb节点 1.配置 ex-lb 参数开启转发 ingress nodeport1234#/etc/ansible/hosts,在ex-lb下面天界以下参数[ex-lb]10.0.0.10 LB_ROLE=master EX_APISERVER_VIP=10.0.0.250...

2023-06-29
企业级仓库harbor搭建
1.简单说明 Harbor是由VMware公司开源的企业级的Docker Registry管理项目,相比docker官方拥有更丰富的权限权利和完善的架构设计,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。 2.组件 Harbor 由 5 个容器组成: 容器(组件)名称 说明 Proxy 由 Nginx 服务器构成的反向代理 Registry 由 Docker 官方的开源 registry 镜像构成的容器实例 Core services 构成此容器的代码是 Harbor 项目的主体 Mysql 由官方 MySql 镜像构成的数据库容器 Log 运行着 rsyslogd 的容器,通过 log-driver 的形式收集其他容器的日志 其中Core services是Harbor的核心功能,主要提供以下的服务: 组件 说明 UI 提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权 Webhook 为了及时获取registry...