离线安装集群

参考 https://github.com/easzlab/kubeasz/blob/master/docs/setup/offline_install.md

离线文件准备

在一台能够访问互联网的服务器上执行:

  • 下载工具脚本easzup,举例使用kubeasz版本3.1.0
export release=3.1.0
curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
  • 使用工具脚本下载

默认下载最新推荐k8s/docker等版本,使用命令./easzup 查看工具脚本的帮助信息

# 举例使用 k8s 版本 v1.18.6,docker 19.03.5
./ezdown -D -d 19.03.14 -k v1.18.6
# 下载离线系统软件包
./ezdown -P
执行成功后,所有文件均已整理好放入目录/etc/ansible
,只要把该目录整体复制到任何离线的机器上,即可开始安装集群,离线文件包括:
  • /etc/ansible 包含 kubeasz 版本为 ${release} 的发布代码
  • /etc/ansible/bin 包含 k8s/etcd/docker/cni 等二进制文件
  • /etc/ansible/down 包含集群安装时需要的离线容器镜像
  • /etc/ansible/down/packages 包含集群安装时需要的系统基础软件

离线文件不包括:

  • 管理端 ansible 安装,但可以使用 kubeasz 容器运行 ansible 脚本
  • 其他更多 kubernetes 插件镜像

离线安装

上述下载完成后,把/etc/ansible整个目录复制到目标离线服务器相同目录,然后在离线服务器上运行:

  • 离线安装 docker,检查本地文件,正常会提示所有文件已经下载完成
./easzup -D
  • 启动 kubeasz 容器
./easzup -S
  • 设置参数允许离线安装
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/chrony/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/ex-lb/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/kube-node/defaults/main.yml
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/prepare/defaults/main.yml

在kubeasz容器内执行k8s的安装

docker exec -it kubeasz ezctl start-aio

如果需要配置1主多从的集群

#配置ssh登录node节点
ssh-copy-id root@192.168.11.11
#进入kubeasz容器中执行添加节点命令
docker exec -it kubeasz bash
#执行添加节点命令
ezctl add-node default 192.168.11.11

如果当前linux内核版本在4.4以下,kube-proxy的ipvs可能会有问题,导致dns无法解析

解决问题

1、升级系统内核版本

升级 Kubernetes 集群各个节点的 CentOS 系统内核版本:

## 载入公钥 $ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org ## 安装 ELRepo 最新版本$ yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm ## 列出可以使用的 kernel 包版本 $ yum list available --disablerepo=* --enablerepo=elrepo-kernel ## 安装指定的 kernel 版本: $ yum install -y kernel-lt-4.4.231-1.el7.elrepo --enablerepo=elrepo-kernel## 设置开机从新内核启动$ grub2-set-default "CentOS Linux (4.4.231-1.el7.elrepo.x86_64) 7 (Core)"## 查看内核启动项 $ grub2-editenv list saved_entry=CentOS Linux (4.4.231-1.el7.elrepo.x86_64) 7 (Core)重启系统使内核生效:$ reboot启动完成查看内核版本是否更新:$ uname -r 4.4.231-1.el7.elrepo.x86_64

参考:http://www.mydlq.club/article/78/

部署NFS服务,添加为k8s默认storageclass

nfs服务端安装

使用 yum 安装 NFS 安装包。$ sudo yum install nfs-utils注意只安装 nfs-utils 即可,rpcbind 属于它的依赖,也会安装上。服务端配置设置 NFS 服务开机启动$ sudo systemctl enable rpcbind $ sudo systemctl enable nfs启动 NFS 服务$ sudo systemctl start rpcbind $ sudo systemctl start nfs配置共享目录服务启动之后,我们在服务端配置一个共享目录$ sudo mkdir /data $ sudo chmod 755 /data根据这个目录,相应配置导出目录$ sudo vi /etc/exports添加如下配置/data/ 192.168.0.0/24(rw,sync,no_root_squash,no_all_squash)/data: 共享目录位置。
192.168.0.0/24: 客户端 IP 范围,* 代表所有,即没有限制。
rw: 权限设置,可读可写。
sync: 同步共享目录。
no_root_squash: 可以使用 root 授权。
no_all_squash: 可以使用普通用户授权。
:wq 保存设置之后,重启 NFS 服务。$ sudo systemctl restart nfs可以检查一下本地的共享目录$ showmount -e localhost Export list for localhost: /data 192.168.0.0/24这样,服务端就配置好了,接下来配置客户端,连接服务端,使用共享目录。

为k8s添加动态PV

#编辑自定义配置文件:
$ vim /etc/kubeasz/roles/cluster-storage/defaults/main.yml
# 比如创建nfs provisioner
storage:nfs:enabled: "yes"server: "192.168.1.8"server_path: "/data/nfs"storage_class: "nfs-dynamic-class"provisioner_name: "nfs-provisioner-01"
#创建 nfs provisioner
$ docker exec -it kubeasz bash
$ ansible-playbook /etc/kubeasz/roles/cluster-storage/cluster-storage.yml
$ kubectl patch storageclass nfs-dynamic-class -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
# 执行成功后验证
$ kubectl get pod --all-namespaces |grep nfs-prov
kube-system   nfs-provisioner-01-6b7fbbf9d4-bh8lh        1/1       Running   0          1d
注意 k8s集群可以使用多个nfs provisioner,重复上述步骤1、2:修改使用不同的nfs server nfs_storage_class nfs_provisioner_name后执行创建即可。

开始部署Kubesphere 3.1.1正式版本

参考:https://github.com/kubesphere/ks-installer

准备工作

集群现有的可用内存至少在 10G 以上。 如果是执行的 allinone 安装,那么执行 free -g 可以看下可用资源

$ free -gtotal        used        free      shared  buff/cache   available
Mem:              16          4          10           0           3           2
Swap:             0           0           0

部署 KubeSphere

最小化快速部署

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/cluster-configuration.yaml# 查看部署进度及日志$ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

部署完成后可执行如下命令查看控制台的服务端口,使用 IP:consolePort(default: 30880) 访问 KubeSphere UI 界面,默认的集群管理员账号为 admin/P@88w0rd

kubectl get svc/ks-console -n kubesphere-system

以上为最小化部署,如需开启更多功能,请参考如下步骤配置相关依赖:

安装可插拔功能组件

  1. 编辑 ClusterConfiguration 开启可插拔的功能组件:
#编辑k8s的clusterconfig,将未开启的日志收集、告警监控、devops等功能按需开启(对应enable设置为true)
kubectl edit cc ks-installer -n kubesphere-system

按功能需求编辑配置文件之后,退出等待生效即可,如长时间未生效请使用如下命令查看相关日志:

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

使用ansible部署K8S1.18集群并使用Kubesphere 3.1.1实现devops、日志收集、灰度发布、告警监控相关推荐

  1. 利用Docker/Ansible实现轻量集群服务部署(视频演示+彩蛋)

    周良伟 网易云信系统架构师 负责云信IM平台的架构设计和服务器研发团队 作者简介 今天和大家分享的主题是如何用Docker/Ansible来做轻量私有化的技术方案.首先,简单介绍一下所谓轻量私有化到底 ...

  2. Kubernetes 部署高可用集群(二进制,v1.18)下

    高可用架构(扩容多Master架构) Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效状 ...

  3. 如何部署一个Kubernetes集群

    来源 | 无敌码农 责编 | 寇雪芹 头图 | 下载于视觉中国 在上一篇文章<Kubernetes和Docker的关系是什么?>中,和大家分享了关于Kubernetes的基本系统架构以及关 ...

  4. 二进制部署k8s1.18(下)

    二进制部署相对其他部署方式来说要复杂一些,步骤比较多,为了避免篇幅过长,故拆分成了三篇: 二进制部署k8s1.18(上) 二进制部署k8s1.18(中) 二进制部署k8s1.18(下) 部署 kube ...

  5. kubernetes-1.11.0集群部署之master集群 (二)

    kubernetes-1.11.0集群部署之master集群 (二) Master master 的组件有以下: 1. API ServerApi server提供HTTP/HTTPS RESTful ...

  6. 使用Minikube部署本地Kubernetes集群(二十九)

    前言 使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题. 在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建.如果搭建过程中 ...

  7. 吊炸天!一行命令快速部署大规模K8S集群!!!

    吊炸天!一行命令快速部署大规模K8S集群!!! 先决条件 请事先准备好几台服务器(测试环境虚拟机即可) 请事先设置好相同的root密码(方便同时操作多服务器) 请事先在Linux安装好docker 请 ...

  8. 使用 Docker Stack 部署多服务集群

    使用 Docker Stack 部署多服务集群 前言 单机模式下,我们可以使用 Docker Compose 来编排多个服务,而在 上一篇文章 中介绍的 Docker Swarm 只能实现对单个服务的 ...

  9. innodb 集群_部署MySQL InnoDB集群以实现高可用性

    innodb 集群 In this article, I am going to explain how we can deploy the MySQL InnoDB cluster. InnoDB ...

最新文章

  1. 机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义
  2. XHProf的安装和使用(PHP性能测试神器)
  3. H5嵌入原生开发小结----兼容安卓与ios的填坑之路
  4. Sphinx编译docs文档
  5. 数据库过滤操作中 != 或者 指定操作数并不能改匹配到NULL值
  6. 大神云集!2019年谷歌博士奖学金获得者重磅问世,清华、上交大、港中文入选最多!...
  7. 树状数组 Binary Indexed Tree/Fenwick Tree
  8. c/c++入门教程 - 2.5 文件操作、fstream(write写文件、read读文件、ios::binary二进制文件读写)
  9. java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
  10. 安卓10不支持qmc解码_百度云不限速下载,超级简单!亲测可用,IOS/安卓/电脑全支持...
  11. 简单的美团-web前端页面
  12. select * from a,b用法
  13. python将横转为竖_如何将视频从横屏转为竖屏?
  14. matlab图像的恢复
  15. 【10】AccessibilityService实现探探app的自动化喜欢和不喜欢+ [as 3.0如何打开层级调用uiautomatorviewer]
  16. C++语言递归实现求从n个数中选k个进行组合的组合数
  17. 计算机应用类专业综合知识模拟卷(七),计算机应用专业综合知识模拟试卷5
  18. 斯人若彩虹,遇上方知有——dbGet(一)
  19. java黑皮书25.18-19----(压缩与解压),带界面,概念版
  20. 【论文阅读】AD-GCL:Adversarial Graph Augmentation to Improve Graph Contrastive Learning

热门文章

  1. 登陆后,地址栏中有sessionid
  2. ARM学习之Cortex-A
  3. Matlab函数contourf
  4. 【C语言】05-C语言循环结构
  5. 戴尔服务器阵列装系统,戴尔服务器R720做Raid 0并安装VMware ESXi 6.7系统方法
  6. 16.13.5 使用ITERATE语句控制流程
  7. 采用链接分配方式进行外存分配时,可采用的两种形式及其特点。假定磁盘块大小为4K,对于128G的硬盘,其文件分配表FAT需占用多少存储空间?
  8. CF:E. Moving Chips【二维双dp + dp灵活交叉】
  9. 张雷博士谈IBM沃森背后的AI技术
  10. 内网信息收集(Windows)--本机信息收集