离线安装集群
参考 https://github.com/easzlab/kubeasz/blob/master/docs/setup/offline_install.mdhtml
离线文件准备
在一台可以访问互联网的服务器上执行:node
- 下载工具脚本easzup,举例使用kubeasz版本2.2
export release=2.2.1 curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup chmod +x ./easzup
- 使用工具脚本下载
默认下载最新推荐k8s/docker等版本,使用命令./easzup
查看工具脚本的帮助信息linux
# 举例使用 k8s 版本 v1.18.2,docker 19.03.5 ./easzup -D -d 19.03.5 -k v1.18.2 # 下载离线系统软件包 ./easzup -P
执行成功后,全部文件均已整理好放入目录/etc/ansible ,只要把该目录总体复制到任何离线的机器上,便可开始安装集群,离线文件包括:
/etc/ansible
包含 kubeasz 版本为 ${release} 的发布代码/etc/ansible/bin
包含 k8s/etcd/docker/cni 等二进制文件/etc/ansible/down
包含集群安装时须要的离线容器镜像/etc/ansible/down/packages
包含集群安装时须要的系统基础软件
离线文件不包括:git
- 管理端 ansible 安装,但可使用 kubeasz 容器运行 ansible 脚本
- 其余更多 kubernetes 插件镜像
离线安装
上述下载完成后,把/etc/ansible
整个目录复制到目标离线服务器相同目录,而后在离线服务器上运行:github
- 离线安装 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
docker exec -it kubeasz easzctl start-aio
若是须要配置1主多从的集群json
#配置ssh登陆node节点 ssh-copy-id root@192.168.11.11 #进入kubeasz容器中执行添加节点命令 docker exec -it kubeasz bash #执行添加节点命令 easzctl add-node 192.168.11.11
若是当前linux内核版本在4.4如下,kube-proxy的ipvs可能会有问题,致使dns没法解析vim
解决问题bash
一、升级系统内核版本服务器
升级 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 防火墙须要打开 rpc-bind 和 nfs 的服务 $ sudo firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs} success $ sudo firewall-cmd --reload success 配置共享目录 服务启动以后,咱们在服务端配置一个共享目录 $ 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/ansible/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/ansible/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,重复上述步骤一、2:修改使用不一样的nfs server nfs_storage_class nfs_provisioner_name后执行建立便可。
开始部署Kubesphere 3.0.0测试版本
参考:https://github.com/kubesphere/ks-installer
准备工做
集群现有的可用内存至少在 10G
以上。 若是是执行的 allinone
安装,那么执行 free -g
能够看下可用资源
$ free -g total used free shared buff/cache available Mem: 16 4 10 0 3 2 Swap: 0 0 0
部署 KubeSphere
最小化快速部署
kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/v3.0.0-alpha.2/deploy/kubesphere-installer.yaml kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/v3.0.0-alpha.2/deploy/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
以上为最小化部署,如需开启更多功能,请参考以下步骤配置相关依赖:
安装可插拔功能组件
- 编辑 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