Skip to main content

2 篇博文 含有标签「部署

View All Tags

· 14 分钟阅读

Choerodon猪齿鱼全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。目前对于通过 Choerodon 开发部署的应用系统有多种部署方式——kubernetes集群部署,主机 JAR 包和 Docker 部署,所以请根具部署方式的不同请灵活选择系统架构。

安装方式

Choerodon提供两种安装方式,即一键部署Choerodon和分步部署Choerodon。下面将介绍一键部署最小化安装Choerodon。

环境准备

硬件最低要求

  • 服务器总内存:32G及以上
  • 服务总CPU数:8核心及以上
  • 单节点硬盘:100Gb及以上(如使用NFS存储,那么NFS服务节点建议存储不小于512G)

软件要求

  • 系统版本:CentOS7.4及以上
  • Kubernetes:1.10及以上
  • Helm:v3.2.4及以上

网络要求

  • 各个服务器之间内网互通内网带宽建议1Gbps以上
  • 各个服务器能够访问外网

下面将以一台8核心32G内存的服务器为例,演示如何安装猪齿鱼。

安装步骤

安装 Choerodon 首先完成 kubernetes 集群的部署和 helm 安装;然后部署 NFS 服务器端,如果你选择其他类型的存储,可以忽略NFS相关的搭建信息;接着使用猪齿鱼命令行工具一键式安装 Choerodon;最后部署 Gitlab Runner,其用于代码提交后自动进行代码测试、构建服务的镜像及生成helm chart并将结果发回给Choerodon。

Kubernetes 集群安装

准备安装脚本

# 安装 git 命令行
sudo yum install git -y
# 克隆本项目代码
git clone https://gitee.com/open-hand/kubeadm-ha.git
# 进入项目目录
cd kubeadm-ha
# 安装 ansible 环境
sudo ./ansible/install.sh

配置 ansible inventory 文件

项目 example 文件夹下提供了 6 个 ansible inventory 示例文件,请按需求进行选择并修改。

拷贝项目下的 example/hosts.allinone.hostname.ini 文件至项目根目录下,命名为 inventory.ini,修改kubernetes部署版本为 1.16.15、各服务器的 IP 地址、用户名、密码,并维护好各服务器与角色的关系。

; 将所有节点的信息在这里填写
;    第一个字段                  为 kubernetes 节点 nodeName,注意必须由小写字母、数字,“-”或“.”组成,并且必须以小写字母或数字开头和结尾
;    第二个字段 ansible_host     为节点内网IP
;    第三个字段 ansible_port     为节点 sshd 监听端口
;    第四个字段 ansible_user     为节点远程登录用户名
;    第五个字段 ansible_ssh_pass 为节点远程登录用户密码
[all]
node1 ansible_host=192.168.56.11 ansible_port=22 ansible_user="vagrant" ansible_ssh_pass="vagrant"
; 单节点lb节点组留空。
[lb]
; 注意etcd集群必须是1,3,5,7...奇数个节点
[etcd]
node1
[kube-master]
node1
[kube-worker]
node1
; 预留组,后续添加master节点使用
[new-master]
; 预留组,后续添加worker节点使用
[new-worker]
; 预留组,后续添加etcd节点使用
[new-etcd]
; 预留组,后续删除worker角色使用
[del-worker]
; 预留组,后续删除master角色使用
[del-master]
; 预留组,后续删除etcd角色使用
[del-etcd]
; 预留组,后续删除节点使用
[del-node]
;-------------------------------------- 以下为基础信息配置 ------------------------------------;
[all:vars]
; 是否跳过节点物理资源校验,Master节点要求2c2g以上,Worker节点要求2c4g以上
skip_verify_node=false
; kubernetes版本
kube_version="1.20.2"
; 容器运行时类型,可选项:containerd,docker;默认 containerd
container_manager="containerd"
; 负载均衡器
;   有 nginx、openresty、haproxy、envoy  和 slb 可选,默认使用 nginx
;   为什么单节点 apiserver 也使用了负载均衡请参与此讨论: https://github.com/TimeBye/kubeadm-ha/issues/8
lb_mode="nginx"
; 使用负载均衡后集群 apiserver port
lb_kube_apiserver_port="8443"
; 网段选择:pod 和 service 的网段不能与服务器网段重叠,
; 若有重叠请配置 `kube_pod_subnet` 和 `kube_service_subnet` 变量设置 pod 和 service 的网段,示例参考:
;    如果服务器网段为:10.0.0.1/8
;       pod 网段可设置为:192.168.0.0/18
;       service 网段可设置为 192.168.64.0/18
;    如果服务器网段为:172.16.0.1/12
;       pod 网段可设置为:10.244.0.0/18
;       service 网段可设置为 10.244.64.0/18
;    如果服务器网段为:192.168.0.1/16
;       pod 网段可设置为:10.244.0.0/18
;       service 网段可设置为 10.244.64.0/18
; 集群pod ip段,默认掩码位 18 即 16384 个ip
kube_pod_subnet="10.244.0.0/18"
; 集群service ip段
kube_service_subnet="10.244.64.0/18"
; 分配给节点的 pod 子网掩码位,默认为 24 即 256 个ip,故使用这些默认值可以纳管 16384/256=64 个节点。
kube_network_node_prefix="24"
; node节点最大 pod 数。数量与分配给节点的 pod 子网有关,ip 数应大于 pod 数。
; https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr
kube_max_pods="110"
; 集群网络插件,目前支持flannel,calico
network_plugin="calico"
; 若服务器磁盘分为系统盘与数据盘,请修改以下路径至数据盘自定义的目录。
; Kubelet 根目录
kubelet_root_dir="/var/lib/kubelet"
; docker容器存储目录
docker_storage_dir="/var/lib/docker"
; containerd容器存储目录
containerd_storage_dir="/var/lib/containerd"
; Etcd 数据根目录
etcd_data_dir="/var/lib/etcd"%

集群部署

部署集群:

# 在项目根目录下执行
ansible-playbook -i inventory.ini 90-init-cluster.yml

查看等待 pod 的状态为 runnning:

# 任意master节点下执行
kubectl get po --all-namespaces -w

如果部署失败,想要重置集群,执行:

# 在项目根目录下执行
ansible-playbook -i inventory.ini 99-reset-cluster.yml

其他集群运维操作请查阅项目使用指南

Helm部署

部署客户端

在任意一个master节点执行以下命令

  • 根据系统下载所需版本
curl -L -o helm-v3.2.4-linux-amd64.tar.gz https://file.choerodon.com.cn/kubernetes-helm/v3.2.4/helm-v3.2.4-linux-amd64.tar.gz
  • 解压压缩包(以linux-amd64为例)
tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
  • 将文件移动到PATH目录中(以linux-amd64为例)
sudo mv linux-amd64/helm /usr/bin/helm

验证部署

执行命令,出现以下信息即部署成功。

$ helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}

NFS动态存储卷

创建 NFS 服务器

在集群每一个节点安装nfs-utils

 sudo yum install -y nfs-utils

配置nfs-server

  • 创建共享目录
mkdir -p /u01/prod
  • 编辑/etc/exports文件添加需要共享目录,每个目录的设置独占一行,编写格式如下:
NFS共享目录路径 客户机IP段(参数1,参数2,...,参数n)
# 例子
/u01 192.168.1.1/16(rw,sync,insecure,no_subtree_check,no_root_squash)

启动NFS服务

配置完成后,您可以在终端提示符后运行以下命令来启动 NFS 服务器:

sudo systemctl enable nfs-server
sudo systemctl start nfs-server

检查NFS服务提供是否正常

到客户机上执行showmount命令进行检查

$ showmount -e <NFS服务器IP地址>
Exports list on <NFS服务器IP地址>:
/u01

安装 nfs-client-provisioner

添加choerodon chart仓库

helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
helm repo update

在任意一个master节点执行下面helm命令,安装nfs-client-provisioner

helm upgrade --install nfs-client-provisioner c7n/nfs-client-provisioner \
--set rbac.create=true \
--set persistence.enabled=true \
--set storageClass.name=nfs-provisioner \
--set persistence.nfsServer=127.0.0.1 \
--set persistence.nfsPath=/u01/prod \
--version 0.1.1 \
--namespace kube-system

域名解析

如果有域名,解析到服务器IP即可。没有域名则可以通过 coredns 的 hosts 插件配置。

编辑 coredns 的 ConfigMap,将域名替换成你自己的域名:

apiVersion: v1
kind: ConfigMap
data:
  Corefile: |
    .:53 {
        hosts {
            192.168.56.11 charts.example.choerodon.io
            192.168.56.11 minio.example.choerodon.io
            192.168.56.11 gitlab.example.choerodon.io
            192.168.56.11 registry.example.choerodon.io
            192.168.56.11 sonarqube.example.choerodon.io
            192.168.56.11 nexus.example.choerodon.io
            192.168.56.11 api.example.choerodon.io
            192.168.56.11 notify.example.choerodon.io
            192.168.56.11 devops.example.choerodon.io
            192.168.56.11 hzero.example.choerodon.io
            192.168.56.11 app.example.choerodon.io
            fallthrough
        }
    }

一键部署猪齿鱼

下载安装工具

在集群 master 执行下面的命令,先安装命令行工具 c7nctl:

curl -fsSL -o get_c7nctl.sh https://gitee.com/open-hand/c7nctl/raw/0.24/scripts/get-c7nctl.sh
chmod 700 get_c7nctl.sh
./get_c7nctl.sh

配置文件

创建并编辑配置文件,修改域名为你自己的域名:

# vim config.yml
--------------------
version: 0.24
metadata:
name: resource-choerodon
namespace: c7n-system # 指定命名空间安装choerodon
spec:
persistence:
storageClassName: nfs-provisioner
resources:
gitlab:
domain: gitlab.example.choerodon.io
minio:
domain: minio.example.choerodon.io
harbor:
domain: harbor.example.choerodon.io
chartmuseum:
domain: chart.example.choerodon.io
sonatype-nexus:
domain: nexus.example.choerodon.io
sonarqube:
domain: sonarqube.example.choerodon.io
choerodon-gateway:
domain: api.example.choerodon.io
choerodon-message:
domain: notify.example.choerodon.io
devops-service:
domain: devops.example.choerodon.io
choerodon-front-hzero:
domain: hzero.example.choerodon.io
choerodon-front:
domain: app.example.choerodon.io

执行安装

在安装过程中,会提示设置某些组件用户名及密码,注意保存;执行部署命令,安装过程中如果遇到问题,请先查看本文最后一节关于常见问题的介绍,如果未能解决你的问题,可以到论坛中提问。

./c7nctl install c7n -c config.yml --version=0.24 --thin-mode
  • 安装完成后您可以访问您配置的choerodon-front域名,默认用户名和密码为admin/Admin@123!
  • 登录一次Gitlab,第一次登录会提示设置root用户密码,随后会跳转到Choerodon认证,使用admin/Admin@123!登录即可,如果使用root/admin用户拉取代码用户名为root,密码为界面设置的密码,其他用户创建后会通过站内信通知Gitlab密码。

安装 Gitlab runner

如你使用一键部署安装的猪齿鱼,在同一集群中可以使用下面命令一键部署Gitlab-Runner。

./c7nctl install runner -c config.yml --version 0.24  --thin-mode

手动安装 runner 请参考官网文档

关于猪齿鱼

Choerodon猪齿鱼全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

更多内容

大家可以通过以下社区途径了解Choerodon猪齿鱼文档,最新动态,产品特性:

【Choerodon官网】

https://choerodon.io/zh/

【汉得开放平台】

https://open.hand-china.com/

【汉得开放论坛】

https://openforum.hand-china.com/

也可以加入Choerodon猪齿鱼官方社区用户交流群,交流猪齿鱼使用心得,Docker,微服务,K8S,敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营小伙伴拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

· 8 分钟阅读

Choerodon 是一个全场景效能平台,通过使用Kubernetes来部署和升级应用,而在集群中部署应用时,像忘记配置资源请求或忘记配置限制这样简单的事情就可能破坏自动伸缩,甚至导致工作负载耗尽资源。因此,保证集群的稳定运行十分必要。

基于这个目的,Choerodon团队通过借鉴 Polaris 健康检查的实现原理,并结合自身业务需求,在 Agent 组件中实现了一套自己的健康检查规则,既能从集群的维度查看其中可能影响稳定性、可靠性、可伸缩性和安全性的配置问题,也支持检测某个环境某个实例中具体的配置问题,从而达到监控集群监控环境健康状态的目的。

本文旨在为大家介绍Choerodon v0.21版本中的健康检查功能。

集群健康检查

执行健康检查

在Choerodon平台中,选择一个存在关联环境且状态为“运行中”的集群,进入“集群管理-健康检查”的页面后,点击页面中的“扫描”按钮,即可执行该集群的健康检查。

在此过程中,Polaris支持的检测类型有:Health Checks、Images、Networking、Resources、Security;检测完毕之后,会将这些分类中所有的配置项分为 passed、warning 以及error 三个状态,分别代表检测通过、警告和错误的状态。

若想详细了解各分类中所包含的默认配置项,请参考Polaris - Kubernetes最佳实践之配置校验

查看健康检查结果

健康检查执行成功后,便能从“集群概览”和“环境详情”两个维度查看存在配置项的问题(即状态为warning和error的配置项)。界面上的健康分值,是根据passed状态配置项的占比计算得来的。需要注意的是,各类详情下,只会展示出warning与 error状态的配置项。

通过检测得出的结果(尤其是存在error状态配置项的分类),集群管理员可以及时的捕捉到集群中存在的问题与隐患,并快速地进行修复。

健康分值= passed配置项数量/(passed配置项数量+1/2warning配置项数量+error配置项数量)

  • 集群概览

“集群概览”维度支持查看集群中各个分类的配置项问题;主要分为了: 健康检查、镜像检查、网络配置、资源分配以及安全这五类,并可以分别查看各个分类下有问题的配置项(warning与 error状态的配置项)及其所属的环境。

  • 环境详情

“环境详情”维度则支持查看集群中所有环境(包括Choerodon平台环境与非Choerodon平台环境)中存在问题的配置项(warning与 error状态的配置项)。

环境健康检查

执行健康检查

通过以上内容,我们知道了集群管理员如何在集群中执行健康检查操作,以此来监控集群的健康状态。那在环境层,环境管理员(运维人员)又如何对环境的健康状态进行监控的呢?针对这个问题,我们在“部署-资源-实例视图-环境层”中,也新增了“健康检查”的功能,用来检测环境下所有实例的配置项问题。 其中包括了对Deployments、StatefulSets、DaemonSets 、Jobs、CronJobs以及ReplicationControllers的检测。(注意:在进行扫描之前,请确保环境中已有实例资源,并且该环境为“运行中”状态)

查看健康检查结果

健康检查执行成功之后,会将这些分类中所有的配置项分为 passed、warning 以及 error 三个状态,分别代表检测通过、警告和错误的状态。并在各个实例下方,展示出有问题的配置项(warning与 error状态的配置项)。此外,对于含有“error”状态配置项的实例和对象,会在其名称后面标出警示标志。

界面上健康分值的计算方式,和上文中集群的一致。环境管理员通过有问题的配置项便能及时的定位与解决问题,从而避免造成更大的损失。

总结

健康检查功能是集群与环境监控模块中重要的一环,能够帮助运维人员实时地检测出集群与环境中可能影响稳定性、可靠性、可伸缩性和安全性的配置问题,以此来保证集群与环境的稳定运行。

关于猪齿鱼

Choerodon 猪齿鱼作为全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

Choerodon 猪齿鱼v0.21安装/升级地址如下。

更加详细的内容,请参阅Release Notes官网

大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。