云原生
云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心; Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。 简单来说云原生就是生来为云,整个程序和架构就是完完全全重构为云端而生,而不是传统的以桌面软件为设计目标。 ArcGIS Enterprise on KubernetesArcGIS 在上一个版本服务器产品(ArcGIS10.9版本,现在最新的是 ArcGIS11,截止文章分享日期) 中已经支持了云原生部署——ArcGIS Enterprise on Kubernetes。这是一个基于微服务的完整架构重新设计,软件通过容器(Docker)交付,并由 Kubernetes(K8S)进行容器编排管理。 以上只是一个简单的了解,重点是如何部署,更详细的说明可以查看官方文档,以后细说。 官方 ArcGIS Enterprise on Kubernetes 简介.https://enterprise-k8s./zh-cn/10.9.1/introduction/what-is-arcgis-enterprise-kubernetes.htm 安装就像一开始说的,原生为云而设计,在云上以最佳姿势运行,不同于以往一个一个安装包的安装设置,ArcGIS Enterprise on Kubernetes 的安装可以通过脚本很快的配置完成,其安装速度和便利性是远胜传统的 ArcGIS Server 和 ArcGIS Portal,如果有安装过的朋友应该知道,这两个东西一般要安装大半天,如果不熟练,一天都不一定能搞定。 1.系统要求和环境准备一共准备了5台机器:
对应的的机器配置 2.基础环境搭建在除了nfs服务器节点的每台机器上做如下设置。 2.1更新 host 文件、修改机器名每台机器均安装 Linux CentOS-7 发行版 hostnamectl set-hostname master.geoscenedongxf.cn hostnamectl set-hostname worker1.geoscenedongxf.cn hostnamectl set-hostname worker2.geoscenedongxf.cn hostnamectl set-hostname nfs.geoscenedongxf.cn hostnamectl set-hostname oscene.local 2.2升级Linux内核#导入ELRepo仓库的公钥 rpm --import https://www./RPM-GPG-KEY- #为yum安装ELRepo仓库 rpm -Uvh http://www./elrepo-release-7.0-3.el7.elrepo.noarch.rpm #查看可用版本 yum --disablerepo="*" --enablerepo="elrepo-kernel" list available #安装最新内核 yum --enablerepo=elrepo-kernel install -y kernel-ml # 查看当前机器可用内核 sudo awk -F' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 更改默认启动内核项 grub2-set-default 0 #第0个可用内核 重启机器 reboot 2.3 关闭机器防火墙查看防火墙当前状态 systemctl status firewalld.service 关闭 systemctl stop firewalld.service systemctl disable firewalld.service 2.4 关闭selinuxsetenforce 0 # 用于临时关闭 vi /etc/sysconfig/selinux # 用于永久关闭 将SELINUX=enforcing改为SELINUX=disabled 然后保存退出 2.5 关闭swap分区
cat /etc/fstab 2.6 时间节点同步:yum install ntpdate -y ntpdate ntp2.aliyun.com 2.7 安装dockeryum install -y yum-utils # 添加yum源,这里添加的是阿里云的yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 查看docker版本 yum list docker-ce --showduplicates | sort -r # 您可以选择其他版本 yum -y install docker-ce-20.10.12-3.el7 #配置docker镜像加速 mkdir -p /etc/docker systemctl daemon-reload systemctl restart docker # 设置docker开机启动 systemctl enable docker 3.配置共享存储3.1安装 NFS 服务(NFS 端)# 停止并禁用防火墙 systemctl stop firewalld systemctl disable firewalld #关闭并禁用SELinux setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config #安装nfs-utils和rpcbind yum install -y nfs-utils rpcbind systemctl start rpcbindsystemctl enable rpcbindsystemctl start nfssystemctl enable nfs #创建共享目录配置 mkdir -p /home/arcgisk8s chmod 755 /home/arcgisk8s vi /etc/exports 在该文件里添加如下内容: /home/arcgisk8s *(rw,sync,no_root_squash) exportfs -r showmount -e nfs服务器IP #看共享目录是否能正常export 比如: showmount -e 10.10.10.241 3.2在 k8s 各个节点挂载共享目录仅安装nfs-utils yum install -y nfs-utils systemctl start nfssystemctl enable nfs 创建挂载目录 mkdir -p /mnt/arcgisk8s chmod 755 /mnt/arcgisk8s vi /etc/fstab #在该文件中挂载,使系统每次启动时都能自动挂载 nfs服务端 IP:xxxxx 10.10.10.241:/home/arcgisk8s /mnt/arcgisk8s nfs defaults 0 0 192.168.0.6:/home/arcgisk8s /mnt/arcgisk8s nfs defaults 0 0 mount -a #使文件/etc/fstab生效 查看挂载情况 df -h 4.部署 Rancher(选择一个节点即可)Rancher 是一个开源的项目,提供了在产品环境中对 Docker 容器进行全方位管理的平台。 使用 Rancher 可以快速部署 Kubernetes,较为方便。 4.1 创建rancher的挂载目录mkdir -p /rancher_home/rancher mkdir -p /rancher_home/auditlog 4.2 启动rancher启动完毕后,可以进入界面 https://安装机器IP:9443 4.3获取登录密钥docker ps # 获取 rancher 容器的 ID,然后替换下面的container-id 获取登录密钥 docker logs container-id 2>&1 | grep "Bootstrap Password:" 比如:
4.4创建账户默认账户名:admin 密码自己设置 用户名:admin 密码:3gpftxj2ckjlcx 4.5设置中文5.创建 k8s 集群注意:如果创建k8s集群失败或者要重新创建集群,使用以下 .sh 命令做完全清理。 5.1创建点击框选处的创建 选择自定义 定义Cluster名字 选择k8s的版本v1.21.9;由于ArcGIS Enterprise on K8s本身内置了一个nginx Ingress服务,因此,这里禁用;其他均采用默认参数 5.2节点选项etcd、ControlPlane、worker 全部勾选后,复制下方的命令输入到 master 终端并运行。 待激活后 仅勾选 Worker,然后复制命令到 worker1 机器上运行,成功激活后再复制命令带到 worker2 运行。 所有节点激活成功并启动: 6.安装 Kubectl(选择一个节点)Kubectl 是 k8s 自身的重要管理工具。 6.1安装和部署 kubectl安装(Master节点) 方法3(使用该方法) https:///docs/tasks/tools/install-kubectl-linux/ 下载包 下载最新版(推荐) 或者下载指定版本 安装包 sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl 查看安装版本 kubectl version --client 6.2 获取kubeconfig登录 rancher,并点击进入之前创建的 cluster 集群即 arcgisk8s 的仪表盘,点击右上角的 Copy Kubeconfig to Clipboard 按钮获取 kubeconfig 内容。 6.3在 master 节点上创建 kubeconfig 文件输入上述获得的信息,以运行部署脚本和其他测试 mkdir -p ~/.kube vi ~/.kube/config 验证kubeconfig配置 运行获取所有节点信息,即说明配置成功 kubectl get nodes 7.登录镜像仓库关于私库的搭建方法自己网上找吧,挺多的。 在每个节点上,登录私库并输入账户和密码,确保部署阶段可成功拉取镜像 7.1登录docker login https://oscene.local 如果是非 https 私库 比如这个 docker login repo.geoscene.cn:5000 所有在所有节点的 daemon.json 中设定不验证私库证书 vi /etc/docker/daemon.json 添加: { "insecure-registries": ["repo.geoscene.cn:5000"], "registry-mirrors": ["XXX"] } 添加后重启 docker systemctl daemon-reload systemctl restart docker 7.2 放置证书1)在/etc/docker/certs.d下建立文件夹,文件夹名字是私有仓库的域名,即oscene.local 2)将证书拷贝至oscene.local文件夹下 8.运行部署脚本8.1创建命名空间kubectl create namespace arcgis 8.2 上传安装包,解压将 ArcGIS_Enterprise_Kubernetes_1091_180123.tar.gz 上传至master节点(也可任一节点)。本次压缩包都放置于 master 节点。 解压文件 tar -zxvf ..... tar -zxvf ArcGIS_Enterprise_Kubernetes_1091_180123.tar.gz 8.3 准备加密文件使用安装包中提供的工具来创建加密文件:tools 下的 password-encrypt.sh。 运行该工具需要两个参数,一个是 keyfile 的全路径;一个是密码。 #创建 keyfile 文件和文件夹 #创建文件夹 地址随意 mkdir -p /home/EncryptionKeyfile #导航至新建的地址,创建 keyfile 文件 #内容随意,但不能为空,否则下面执行工具会失败。 cd /home/EncryptionKeyfile 8.4运行脚本进入目录 cd /home/arcgis-enterprise/1091/setup/tools/password-encrypt 运行,密码设置为arcgis@123 sh password-encrypt.sh -f /home/EncryptionKeyfile/keyfile.txt -p "arcgis@123" 执行会返回密码的加密字符串。拷贝下来,并替换掉keyfile.txt的随意文本。 返回token U2FsdGVkX1/+msKUK481LibRhj6Hoqogfp8x8m0OGqE= 用返回的token替换123 cd /home/EncryptionKeyfile vi keyfile.txt 再次确保每个节点都已成功登录连接到镜像仓库。 8.4 部署撤销部署(如果最后在网页配置 ArcGIS 组织时失败,取消部署后重新部署 #导航至 setup目录 cd /home/arcgis-enterprise/1091/setup ./undeploy.sh -n arcgis 重新部署后,重新修改 arcgis-ingress-nginx 的 Service 配置文件。) 执行部署脚本#导航至 setup目录 cd /home/arcgis-enterprise/1091/setup 运行部署代码 ./deploy.sh 填写相应参数: n n arcgis /home/EncryptionKeyfile/keyfile.txt oscene.local esridocker geoscene geoscene1234 master.geoscenedongxf.cn arcgis 4 arcgis 最后点击 Enter 部署即可。 9.创建组织9.1 配置externalIP配置externalP确保外部可访问 arcgis 的组织创建页面 1)在cluster界面,点击Service Discovery -> Services,找到arcgis-ingress-nginx这一服务 2)点击Edit YAML 3)添加 externalIPs 项,设置为 Master 节点的 ip 确保外部可以访问到 arcgis 组织创建界面 externalIPs: - 192.168.0.8 (这里填 master 节点的 IP) 9.2 配置coredns1)在cluster界面,确保namespace为All namespaces,点击More Resources->Core->ConfigMaps下的coredns,点击Edit YAML 或者在存储-ConfigMaps 下也能找到 2) 添加域名和ip的映射 9.3 创建 storage class
上面的nfs路径和IP请根据个人的情况修改 修改 nfs 服务器的 IP 和共享路径后 把上述文本复制到新建的 rancher-nfs-local.yaml 中(或者任何名称) /# 创建 存储类 kubectl apply -f rancher-nfs-local.yaml 验证pvc是否可以创建成功 点击PersistentVolumeClaims->Create,验证pvc是否可以创建成功。 状态未 Bound 表示创建成功 10.正式创建组织打开 https://master域名/arcgis/manager开始配置 打开 https://masterIP/arcgis/manager开始配置 配置存储:使用动态存储类型,存储类名称,使用前面步骤创建的存储类名称 arcgis-storage-default。其他默认。 关于 ArcGIS Enterprise on Kubernetes 的镜像安装包哪里有下载,可以联系易智瑞或者 ESRI 官网看看如何获得.https://enterprise-k8s./zh-cn/10.9.1/introduction/what-is-arcgis-enterprise-kubernetes.htm 文章较为复杂繁琐,涉及计 Linux、Docker 等相关基础知识。建议收藏起来慢慢看。 |
|