关于kubesphere:无锡广电新媒体云原生容器化平台实践

作者:毛伟,现任无锡广电集团新媒体核心零碎架构师,曾负责全国多个省级、市级、区县融媒体平台设计建设,有着丰盛的新媒体行业建设零碎架构设计教训。现次要从事无锡博报系列新媒体平台建设,推动各业务产品线向云原生转型,并在此畛域发展相干布道工作。单位简介无锡广播电视团体成立于 1999 年,为全国首家广电集团。2007 年底组建成立无锡播送电视台(与无锡广播电视团体两块牌子、一套班子)。团体作为支流媒体和市属文化国企,承当宣传与经营双重职能:一方面为市委市政府核心工作和全市改革倒退稳固大局提供舆论服务,一方面通过放弃晋升经营效益,为宣传工作提供撑持,为全市文化产业倒退贡献力量。团体目前领有 6 个播送频率、7 个电视频道(其中 1 个公交、地铁挪动电视频道)、“无锡博报”领衔的新媒体矩阵。 背景介绍作为国内最早提出媒体交融倒退理念,并付诸实践和不断创新的城市广电媒体之一,无锡广电早在2012年就开始布局挪动端策略并不断创新,在 2021 年将旗下两大客户端降级迭代全新的“无锡博报”客户端,并造成系列化的“博报”微信公众号、微博和视频号,组成流传力和影响力更强的新媒体矩阵。近期荣获国家广电总局 2022 年度“全国广播电视媒体交融先导单位”和“新时代 新品牌 新影响”等荣誉。 在长期的实际中,无锡广电逐渐摸索出适宜城市广电的媒体交融倒退思路和教训。以流传力建设为引领,对外踊跃打造新型流传体系,保持“挪动优先”策略,做大做强挪动端平台,霸占新兴流传阵地。以全网流传和本地经营需要为导向,继续推动外部组织架构、体制机制、业务流程、技术平台的再造和优化。推动“主力军全面挺进主战场”,将传统广播电视的团队和产能向新媒体端转移,打造具备城市媒体特色舆论主阵地。 这就要求无锡广电必须疾速适应一直变动的经营和市场需求,用高效、麻利的利用部署和运维对各类成几何式增长业务提供无力撑持。 在进行容器化革新前,无锡广电次要是采纳基于虚拟化技术的基础设施环境,每个业务利用依据各自的需要采纳独立虚机部署,随着工夫的积攒虚机规模变得越来越宏大、简单。架构有余日益凸显,具体如下: 在达到肯定规模下虚机操作系统自身须要占用的计算资源和存储资源较为节约。长期积攒的老旧操作系统须要跟进保护降级,如:现存大量的 CentOS 零碎在官网进行保护后须要新的发行版本代替。每个利用都须要独立保护和治理,使得部署和运维老本变得越来越高。弹性伸缩的能力较差,部署工夫长。短少测试环境,并且开发环境和生产环境不对立,利用更新依赖手工。短少业务与资源利用率的监控,无奈提前发现潜在的问题。这些问题导致运维效率绝对较低,无奈满足业务疾速迭代的需要。因而,无锡广电新媒体运维团队决定进行容器化革新,以晋升零碎的弹性、灵活性和可维护性,实现如下性能: 更高效的资源利用率:容器化技术能够实现共享操作系统内核,从而缩小每个利用所需的计算资源和存储资源。更好的可维护性:通过应用容器编排工具,可更好地治理和保护容器,进步部署和运维效率,降低成本。更高的弹性:容器化技术能够实现疾速部署和启动,实现疾速伸缩,从而更好地满足业务的变动需要。更高的一致性:容器化技术能够保障开发环境、测试环境和生产环境的一致性,从而升高利用更新的危险。更好的可观测性:通过分布式追踪、可视化的流量拓扑和监控,能够实现对节点到容器到业务资源监控和告警,及时发现、定位和解决问题。更好的利用生命周期治理:通过集成利用商店和 DevOps 零碎及微服务治理等技术,能够使利用的公布治理更加麻利、弹性和可扩大。为此,拥抱云原生曾经成为整个行业的趋势,能够帮忙降低成本、提高效率、加强竞争力。 选型布局通过后期初步应用容器化及 Kubernetes 的积攒上,在决定全面转型容器化前咱们对将来整个 Kubernetes 的治理平台布局下面建设了联合本身的一些需要: 可能纳管多个 Kubernetes 集群,咱们会依据业务适配状况拆分多个集群,并且可在现有集群上装置。可能从 Kubernetes 集群的部署、降级保护、治理的一体化集成,涵盖集群和利用的生命周期治理。有 API 接口便于和自有 CI/CD 工具上的对接。非 CentOS 零碎的兼容性(选型期间正推动去 CentOS 化)。便于今后的集群降级,在集群部署上能完满适配 containerd 容器运行时。部署后的集群靠近原生装置,以便于前期脱离工具自行保护集群。有国内装置镜像,反对纯离线部署。在选型期间咱们正好在布局部署自研业务的集群,在 CNCF 认证的 Kubernetes 部署工具中发现了 KubeSphere 和 Kubekey 这个解决方案,并在集群部署和生命周期治理方面进行了深度的测试,次要围绕上面一些维度: 通过测试,发现 KubeSphere+Kubekey 在各个方面都更加符合当初对治理平台的需要,为此采纳 KubeSphere+Kubekey 来搭建了自研业务(经营类为主)的一套 Kubernetes 集群以及治理平台。 实际过程部署架构基础设施以本人的机房虚拟化集群为根底,并应用虚拟机来构建 Kubernetes 集群。在集群布局方面,分为两个生产集群,别离用于内容生产业务和经营业务。对于内容生产业务集群,更重视稳定性,因而采纳了 1.21 版本。而对于经营业务集群,在谋求绝对稳固的根底上,还跟进了一些新版本个性,采纳了 1.23 版本。同时在经营业务集群会后行实际一些新版本的个性积攒教训,以便为未来降级内容生产业务集群打好根底。当然,无论是哪个集群,每次进行相应的降级和保护之前,都会创立一个长期的测试集群,以进行相干操作的测试和验证。 ...

March 16, 2023 · 2 min · jiezi

关于kubesphere:KubeSphere-332-版本正式发布

间隔上一个版本 v3.3.1 公布,曾经过了 3 个多月,明天咱们很快乐发表 KubeSphere v3.3.2 正式公布! 此版本由 68 位贡献者参加代码提交,感激各位贡献者对 KubeSphere 我的项目的反对与奉献! 本次公布的 KubeSphere v3.3.2 带来了更多的优化加强,次要集中在对 DevOps 和利用商店易用性的晋升和问题修复。以下是一些重点个性的介绍。 DevOps将流水线运行的后果从 annotations 挪到 configmap 中,避免简单场景超过 annotation 大小限度的问题。优化继续部署创立和应用的流程和文案。停止状态的流水线反对链接查看详情。优化 kubectl 命令查看 PipelineRun 时的展现,减少 ID 列。优化流水线运行的生命周期,去掉 Queued 状态。修复用户批改并保留流水线配置后,Webhook 配置失落的问题。修复下载流水线制品失败的问题。修复因 jenkins 主动清理导致流水线变成“未运行”状态的问题。修复流水线的主动清理策略,使其与 Jenkins 的清理保持一致。利用商店优化修复上传的应用程序模板上不显示图标的问题。修复利用商店利用信息处没有显示利用首页的问题。修复利用商店导入内置利用时导入失败的问题。修复 IPv6 环境下 UUID 生成谬误的问题。更多细节除了上述提到的新个性和性能加强,该版本中还有很多细节改良,例如: 限度我的项目的网络隔离范畴为以后企业空间。在多集群环境中显示 system-workspace 所属集群。减少了动静的 cache 配置项。修复领有集群管理权限的平台角色无奈治理集群的问题。修复 ks-apiserver 在 Kubernetes 1.24+ 版本中异样解体的问题。能够拜访下方链接来查看残缺的 Release Notes: https://kubesphere.io/zh/docs...

February 9, 2023 · 1 min · jiezi

关于kubesphere:怡合达业务大规模容器化最佳实践

作者:肖念康,东莞怡合达智能制作供应链资深 Java 开发工程师,次要负责公司外部 DevOps、代码托管平台、工作需要治理平台的研发及其他我的项目的治理,云原生的钻研与开发工作。公司简介 怡合达致力于自动化零部件研发、生产和销售,提供 FA 工厂自动化零部件一站式供给,怡合达深耕自动化设施行业,基于利用场景对自动化设施零部件进行标准化设计和分类选型,通过规范设定、产品开发、供应链治理、平台化经营,以信息和数字化为驱动,为自动化设施行业提供高品质、低成本、短交期的自动化零部件产品。 技术现状在应用 Kubernetes 之前,公司始终是采纳超交融传统虚拟机的形式来部署上线我的项目,这就导致公司资源节约十分重大,每年单单在服务器的开销就大大增加。我的项目在上线的过程中出错的几率十分大,并且难以排查,没有一套标准的流程,须要开发人员手动部署,导致人员耗费十分重大。团队规模目前公司领有 3000+ 的员工,其中研发团队(运维,开发,测试,产品等)超过 300 人,在苏州,湖北都有研发团队。 背景介绍目前行业正在向自动化、云原生凑近,传统的互联网模式曾经无奈满足大公司的业务需要了,为了让开发人员将更多的精力放在业务上,自动化部署、我的项目的全方位监控就变得越来越重要。 目前公司云原生是刚刚起步,很多货色须要去摸索发现,所以技术上有很多欠缺,须要十分粗疏的了解各个组件的运行原理和模式。 拥抱云原生就意味着公司的 IT 层面将回升一个等级,原有的我的项目治理将齐全摒弃,将会以一套全新的形式来全方位地治理我的项目,应用 Kubernetes 和容器化技术将缩小服务的运维老本和我的项目的容错老本,为客户带来的应用体验也将晋升一个档次。 选型阐明工具选型的过程在应用 KubeSphere 之前,咱们也应用了很多其余的我的项目,如 KubeOperator,DaoCloud,Choerodon等。然而在应用过程中发现,其余工具的性能并不是很欠缺,遇到问题很难排查,社区也不是很沉闷,这就导致咱们的应用老本和保护老本大大增加。 抉择 KubeSphere 的起因我通过博客和论坛发现了 KubeSphere,Issue 的提出与解决十分的欠缺和及时。KubeSphere 官网有很多案例与解说,社区活跃度十分高。这不正是我想要的吗? 通过实际应用 KubeSphere 搭建的集群更加稳固,资源管控更加便捷,与同类云原生产品相比,KubeSphere 简直实现了咱们在生产环境会用到的所有性能。 于是咱们就开始在测试环境搭建并应用,随后缓缓地向生产环境迁徙。目前咱们公司有三分一的我的项目曾经迁徙到 KubeSphere 平台上,并且回收了之前的旧服务器,大大提高了资源使用率。 实际过程基础设施与部署架构Kubernetes 与 KubeSphere 的搭建也非常简单,依据官网文档先下载 KubeKey, 应用 KubeKey 搭建就能够了。 目前咱们应用公有环境来搭建 Kubernetes 与 KubeSphere,因为是在咱们外部应用,所以不思考在云上进行搭建。 根底服务器采纳的是 Linux Centos 7,内核版本是 5.6。 在搭建 Kubernetes 集群时,我抉择应用 Keepalived 和 HAproxy 创立高可用 Kubernetes 集群,其中包含两个负载平衡入口。 而后是 3 个 Master 节点,3 个 Worker 节点,一个 Etcd 集群,因为是多集群,我会为公司每个我的项目创立一个集群,所有咱们单个集群调配的资源不是很多,当资源不够应用时须要进行申请。 ...

February 9, 2023 · 2 min · jiezi

关于kubesphere:云原生周刊-使用-K8s-可视化工具集来调试业务-2023130

开源我的项目举荐k8zk8z 意在 K8s 业务层面,提供一个不便好用的 K8s 集群可视化工具集。目前蕴含以下性能: 终端:连贯到集群任意 Pod 容器上,不便调试Tcpdump:对集群内容器进行 tcpdump 抓包,可间接展现抓包信息,也可拉起 wireshark 实时剖析Files:可将本机文件上传至集群 Pod 里或从集群 Pod 上下载文件Profiling: 对开启了 pprof 的 go 服务进行 profile,申请 profile 并绘制火焰图不便剖析Pod HTTP proxy: 代理 http 申请到集群内 Pod 上,不便一些本地网络和集群 Pod 网络不通的场景调试接口应用Debug:复制一个 Pod 并新建一个终端连贯下来,不便针对 crash 的 Pod 手动调试故障ConfigMap:提供方便的编辑器来治理集群内的 ConfigMap vestavesta 是一款集容器扫描,Docker 和 Kubernetes 配置基线查看于一身的工具。查看内容包含镜像或容器中蕴含破绽版本的组件,同时依据云上实战浸透教训查看 Docker 以及 Kubernetes 的危险配置。 BoundaryBoundary 是 Hashicorp 开源的基于身份的拜访管理系统,与 SSH 不同,它不须要治理证书,也不须要裸露端口。 VanusVanus 是一个开源的无服务器音讯队列,内置事件处理性能。 文章举荐访谈:为什么 AWS 更偏向于应用虚拟机来隔离代码本文是对 AWS 的工程师 Anthony Liguori 的采访记录,议论了虚拟化、新推出的 Snapstart 以及应用 Lambda 构建无服务器利用的最佳实际。 ...

February 1, 2023 · 1 min · jiezi

关于kubesphere:kubesphere的prometheus监控组件分析

一.什么是kubespherekubesphere是青云推出的kubernetes治理组件,它运行在kubernete集群之上,提供了监控、devops、服务网格等一系列的下层性能。 青云同时还推出了kubekey工具,用以部署kubenetes和kubesphere,反对: 应用kubekey部署kubernetes;应用kubekey部署kubernetes和kubesphere;二.部署多master的kubesphere应用kubekey(即kk)工具部署时,它会先部署kubernetes,而后在此基础上,部署kubesphere。 1.筹备节点筹备3个Centos7.*节点: node1 192.168.1.101node2 192.168.1.102node3 192.168.1.103在每个节点上,装置依赖包: yum install -y socat conntrack ebtables ipset2.筹备kubekey在首节点上下载kk: export KKZONE=cncurl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.1 sh -3.创立集群配置应用kk工具,生成集群配置: ./kk create config --with-kubernetes v1.20.6 --with-kubesphere v3.1.1其中: --with-kubernetes v1.20.6:示意要装置的kubernetes=v1.20.6版本;--with-kubesphere v3.1.1:示意装置的kubesphere=v3.1.1版本,若不愿装置kubespher组件,可不提供该参数;命名执行结束后,将生成config-sample.yaml文件,批改文件内容: 批改hosts中的节点配置;多master环境,须要提供controlPlaneEndpoint中的LB地址,这里仅填写其中一个master的ip;apiVersion: kubekey.kubesphere.io/v1alpha1kind: Clustermetadata: name: samplespec: hosts: - {name: node1, address: 192.168.1.101, internalAddress: 192.168.1.101, user: root, password: ******} - {name: node2, address: 192.168.1.102, internalAddress: 192.168.1.102, user: root, password: ******} - {name: node3, address: 192.168.1.103, internalAddress: 192.168.1.103, user: root, password: ******} roleGroups: etcd: - node1 - node2 - node3 master: - node1 - node2 - node3 worker: - node1 - node2 - node3 controlPlaneEndpoint: domain: lb.kubesphere.local address: "192.168.1.101" port: 6443 kubernetes: version: v1.20.6 imageRepo: kubesphere clusterName: cluster.local ...4.创立集群应用上一步的集群配置,创立集群: ...

January 19, 2023 · 3 min · jiezi

关于kubesphere:使用-KubeSphere-部署高可用-RocketMQ-集群

作者:老Z,云原生爱好者,目前专一于云原生运维,KubeSphere Ambassador。Spring Cloud Alibaba 全家桶之 RocketMQ 是一款典型的分布式架构下的消息中间件产品,应用异步通信形式和公布订阅的音讯传输模型。 很多基于 Spring Cloud 开发的我的项目都喜爱采纳 RocketMQ 作为消息中间件。 RocketMQ 罕用的部署模式如下: 单 Master 模式多 Master 无 Slave 模式多 Master 多 Slave 模式-异步复制多 Master 多 Slave 模式-同步双写更多的部署计划详细信息能够参考官网文档。 本文重点介绍 单 Master 模式和多 Master 多 Slave-异步复制模式在 K8s 集群上的部署计划。 单 Master 模式这种部署形式危险较大,仅部署一个 NameServer 和一个 Broker,一旦 Broker 重启或者宕机时,会导致整个服务不可用,不倡议线上生产环境应用,仅能够用于开发和测试环境。 部署计划参考官网rocketmq-docker我的项目中应用的容器化部署计划波及的镜像、启动形式、定制化配置。 多 Master 多 Slave-异步复制模式每个 Master 配置一个 Slave,有多对 Master-Slave,HA 采纳异步复制形式,主备有短暂音讯提早(毫秒级),这种模式的优缺点如下: 长处:即便磁盘损坏,音讯失落的非常少,且音讯实时性不会受影响,同时 Master 宕机后,消费者依然能够从 Slave 生产,而且此过程对利用通明,不须要人工干预,性能同多 Master 模式简直一样;毛病:Master 宕机,磁盘损坏状况下会失落大量音讯。多 Master 多 Slave-异步复制模式实用于生产环境,部署计划采纳官网提供的 RocketMQ Operator。 ...

November 29, 2022 · 12 min · jiezi

关于kubesphere:直播预告|Apache-APISIX-x-KubeSphere-在线-Meetup-来袭

10 月 22 日(周六)14:00,Apache APISIX 社区将联结 KubeSphere 社区举办一场线上 Meetup,这也是继去年 6 月成都站 Meetup 后,咱们与 KubeSphere 社区联结举办的第二次 Meetup! 本次流动咱们特地邀请到了来自 vivo、驭势科技、希沃、青云的四位技术大咖分享对于两个开源我的项目的开发与实际案例等话题,将为大家出现一场技术内容丰盛、实际参考性强的直播盛宴。 欢送各位社区小伙伴,及宽广开源爱好者、开发者预约观看本次直播! 工夫:2022 年 10 月 22 日(周六)14:00-16:45 报名形式:扫描下方海报二维码或点击视频号预约卡片即可报名观看本次直播!

October 14, 2022 · 1 min · jiezi

关于kubesphere:基于KubeSphere玩转k8sKubeSphere初始化手记

大家好,我是老Z! 本系列文档是我在云原生技术畛域的学习和运维实际的手记,用输入倒逼输出是一种高效的学习办法,可能疾速积攒教训和进步技术,只有把学到的常识写进去并可能让其他人了解,能力阐明真正把握了这项常识。 如果你喜爱本文,请分享给你的小伙伴! 本系列文档内容涵盖(但不限于)以下技术畛域: KubeSphereKubernetesAnsible自动化运维CNCF技术栈1. 本文简介本文接着上篇 <<基于KubeSphere玩转k8s-KubeSphere装置手记>> ,持续玩转KubeSphere、k8s,本期会解说KubeSphere默认装置实现后的一些必要配置。同时,会初步探索一下执行这些必要配置后k8s底层产生了哪些变动。 本文知识点定级:入门级KubeSphere更改默认治理用户的明码KubeSphere可插拔组件的启用和配置KubeSphere用户治理KubeSphere企业空间治理KubeSphere项目管理演示服务器配置主机名IPCPU内存系统盘数据盘用处zdeops-master192.168.9.92440200Ansible运维管制节点ks-k8s-master-0192.168.9.9183240200KubeSphere/k8s-master/k8s-workerks-k8s-master-1192.168.9.9283240200KubeSphere/k8s-master/k8s-workerks-k8s-master-2192.168.9.9383240200KubeSphere/k8s-master/k8s-workerglusterfs-node-0192.168.9.954840200GlusterFSglusterfs-node-1192.168.9.964840200GlusterFSglusterfs-node-2192.168.9.974840200GlusterFS2. 首次登陆配置01. 更改默认用户明码浏览器关上KubeSphere治理界面弹出登陆页面,应用默认用户admin,明码P@88w0rd,登录。

May 5, 2022 · 1 min · jiezi

关于kubesphere:Apache-APISIX-为-KubeSphere-提供更好用的网关及-K8S-Ingress-Controller

KubeSphere 介绍KubeSphere 是在 Kubernetes 中构建的深度云原生利用的零碎,齐全开源,反对多云与多集群治理自动化,提供全栈的 IT 运维能力,简化企业的 DevOps 工作流。它的架构能够十分不便地使利用利用与云原生生态组件进行即插即用(即插即用)的集成。 是全栈的多管道容器平台,KubeSphere 提供了运维敌对的形态操作界面,帮忙企业构建了一个弱小的专门性能的容器。KubeSphere 为用户提供构建企业级Kubernetes 环境需要的报告性能,多云与多集群治理、Kubernetes 治理、DevOps、生命周期治理、微服务治理(服务网格)、与收集、服务与网络、多洞察治理、监控资源日志、事件与审计、存储查问治理、拜访权限管制、GPU 反对、网络策略、监督管理以及平安治理等。 Apache APISIX 介绍Apache APISIX 是伪开源的、动静的云原生网关,由深圳干流科技有限公司于 2019 年捐献给 Apache 基金会,成为 Apache 基金会的当下风行我的项目,也是 GitHub 上最新的门户我的项目。 Apache APISIX 目前曾经笼罩了 API 网关,LB,Kubernetes Ingress,Service Mesh 等多种场景。 后置条件将现有 Kubernetes 集群已更新 KubeSphere 治理。 部署 Apache APISIX 和 Apache APISIX Ingress Controller咱们能够参考 KubeSphere 的文档启用 KubeSphere 的 AppStore(https://kubesphere.io/docs/pl...),或者应用应用 Apache APISIX 的 Helm 仓库来进行开发。这里,咱们间接应用 Apache APISIX的 Helm 仓库进行部署。 执行以下命令增加增加Apache APISIX的Helm repo,并实现部署。 ➜  ~ helm repo add apisix https://charts.apiseven.com"apisix" has been added to your repositories➜  ~ helm repo add bitnami https://charts.bitnami.com/bitnami "bitnami" has been added to your repositories➜  ~ helm repo update➜  ~ kubectl create ns apisixnamespace/apisix created➜  ~ helm install apisix apisix/apisix --set gateway.type=NodePort --set ingress-controller.enabled=true --namespace apisix  W0827 18:19:58.504653  294386 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinitionNAME: apisixLAST DEPLOYED: Fri Aug 27 18:20:00 2021NAMESPACE: apisixSTATUS: deployedREVISION: 1TEST SUITE: NoneNOTES:1. Get the application URL by running these commands:  export NODE_PORT=$(kubectl get --namespace apisix -o jsonpath="{.spec.ports[0].nodePort}" services apisix-gateway)  export NODE_IP=$(kubectl get nodes --namespace apisix -o jsonpath="{.items[0].status.addresses[0].address}")  echo http://$NODE_IP:$NODE_PORT验证是否曾经胜利施行且运行: ➜  ~ kubectl -n apisix get pods NAME                                         READY   STATUS    RESTARTS   AGEapisix-77d7545d4d-cvdhs                      1/1     Running   0          4m7sapisix-etcd-0                                1/1     Running   0          4m7sapisix-etcd-1                                1/1     Running   0          4m7sapisix-etcd-2                                1/1     Running   0          4m7sapisix-ingress-controller-74c6b5fbdd-94ngk   1/1     Running   0          4m7s能够看到相干的Pod均已失常运行。 部署示范我的项目咱们kennethreitz/httpbin用作示例我的项目进行演示。这里也间接在 KubeSphere 中实现部署。 ...

September 2, 2021 · 2 min · jiezi

关于kubesphere:Centos79多节点安装KubeSphere-v311

筹备服务器3台Linux主机,2核4G,50G硬盘 内网IP(可相互ssh)hostname10.206.0.17master10.206.0.12node110.206.0.16node2初始化装置环境systemctl stop firewalldsystemctl disable firewalldsed -i 's/enforcing/disabled/' /etc/selinux/config sed -ri 's/.*swap.*/#&/' /etc/fstabcat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1 EOFsysctl --systemyum install ntpdate -yntpdate time.windows.com装置依赖更新yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bakwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum clean allyum makecacheyum update -y#查看以后yum源yum repolist装置依赖 yum install -y socatyum install -y conntrack配置阿里镜像减速设置仓库地址:https://help.aliyun.com/docum... cat > /etc/docker/daemon.json << EOF{ "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"] }EOF增加阿里源 cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 epo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF多节点装置拉取KubeKey ...

August 28, 2021 · 1 min · jiezi

关于kubesphere:离线环境在Kubernetes安装KubeSphere-v310

KubeSphere官网地址:https://kubesphere.com.cn离线装置kubernetes集群参考sealyun官网地址:https://www.sealyun.com 前置要求先装置好kubernetes,离线装置kubernetes集群参考地址:https://www.sealyun.com批改Kubernetes集群中所有节点中docker的daemon.json文件 vi /etc/docker/daemon.json增加Harbor公有仓库地址如果不配置后续在装置KubeSphere组件时候会发送htts申请,这里咱们是应用的http,因为在内网离线环境中不须要应用https { "insecure-registries": ["192.168.28.150:8001"]}重启docker服务,让配置失效 systemctl daemon-reloadsystemctl restart docker登录Harbor docker login 192.168.28.150:8001 -u 用户名 -p 明码装置NFS服务端1.安装包 在能够联网的机器上下载NFS安装包,当前在服务端和客户端装置应用。yum -y install nfs-utils --downloadonly --downloaddir /home/nfs 下载好后打包上传到要装置的服务器中,执行上面命令开始装置rpm -Uvh *.rpm --nodeps --force2.编辑配置文件⚠️配置文件中的*是容许所有网段,依据本人理论状况写明网段cat >/etc/exports <<EOF/mnt/kubesphere *(insecure,rw,async,no_root_squash) EOF3.创立目录并批改权限⚠️这里为了不便试验授予了挂载目录权限为777,请依据理论状况批改目录权限和所有者mkdir /mnt/kubesphere && chmod 777 /mnt/kubesphere4.启动服务systemctl enable nfs-server rpcbind && systemctl start nfs-server rpcbind配置NFS客户端在所有node节点中装置NFS客户端 rpm -Uvh *.rpm --nodeps --force在k8s集群中的任意节点中执行如下所以操作创立文件 vi storageclass.yaml内容如下: cat >storageclass.yaml <<EOF---apiVersion: v1kind: ServiceAccountmetadata: name: nfs-provisioner---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: nfs-provisioner-runner namespace: defaultrules: - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "create", "delete"] - apiGroups: [""] resources: ["persistentvolumeclaims"] verbs: ["get", "list", "watch", "update"] - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["events"] verbs: ["watch", "create", "update", "patch"] - apiGroups: [""] resources: ["services", "endpoints"] verbs: ["get","create","list", "watch","update"] - apiGroups: ["extensions"] resources: ["podsecuritypolicies"] resourceNames: ["nfs-provisioner"] verbs: ["use"]---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: run-nfs-provisionersubjects: - kind: ServiceAccount name: nfs-provisioner namespace: defaultroleRef: kind: ClusterRole name: nfs-provisioner-runner apiGroup: rbac.authorization.k8s.io---kind: DeploymentapiVersion: apps/v1metadata: name: nfs-client-provisionerspec: selector: matchLabels: app: nfs-client-provisioner replicas: 1 strategy: type: Recreate template: metadata: labels: app: nfs-client-provisioner spec: serviceAccount: nfs-provisioner containers: - name: nfs-client-provisioner image: 192.168.28.150:8001/kubesphere-install/kubesphere/nfs-client-provisioner:v3.1.0-k8s1.11 imagePullPolicy: IfNotPresent volumeMounts: - name: nfs-client mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: fuseim.pri/ifs - name: NFS_SERVER value: 192.168.28.160 - name: NFS_PATH value: /mnt/kubesphere volumes: - name: nfs-client nfs: server: 192.168.28.160 path: /mnt/kubesphere---apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: nfs-storageprovisioner: fuseim.pri/ifsreclaimPolicy: RetainEOF利用storageclass.yaml ...

May 26, 2021 · 3 min · jiezi

关于kubesphere:kubespherepython单体应用的CICD流程

背景根据官网文档java利用的案例,记录下在kubesphere上,构建python单体利用的CICD流程。 简介流程一共分为以下四个步骤: 拉取代码代码扫描构建镜像&推送到仓库部署筹备工作创立企业空间

March 3, 2021 · 1 min · jiezi

关于kubesphere:kubesphere自定义jenkins-agent

背景kubesphere流水线自带的agent只有四类:base、maven、nodejs、go,当须要构建其余框架的我的项目,就须要自定义jenkins agent了。 筹备工作采纳官网的 docker.io/kubesphere/builder-base:v2.1.0 作为根底镜像,在此之上,装置jdk和sonnar scanner cli,构建代码扫描环境。 应用如下Dockerfile构建用于打包的根底镜像: FROM docker.io/kubesphere/builder-base:v2.1.0RUN mkdir /usr/local/java /opt/sonar-scanner# copy the jdk archive to the image,and it will automaticlly unzip the tar fileADD jdk-8u181-linux-x64.tar.gz /usr/local/java/# make a symbol linkRUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk# set environment variablesENV JAVA_HOME /usr/local/java/jdkENV JRE_HOME ${JAVA_HOME}/jreENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/libENV PATH ${JAVA_HOME}/bin:$PATHCOPY sonar-scanner-cli-4.6.0.2311-linux /opt/sonar-scannerRUN ln -s /opt/sonar-scanner/bin/sonar-scanner /usr/sbin将Dockerfile置于一个空目录即可,下载JDK和sonnar-scanner的压缩包放到目录下,其中sonnar-scanner须要解压,而后打包并推送: docker build -t general:v1.0 .docker tag general:v1.0 xxx.com/general:v1.0docker push xxx.com/general:v1.0配置jenkins agent登录kubesphere,进入【配置核心】-【配置】,搜寻 jenkins-casc-config ,批改配置。 在go的形容下增加如下: - name: "general" namespace: "kubesphere-devops-system" label: "general" nodeUsageMode: "EXCLUSIVE" idleMinutes: 0 containers: - name: "general" image: "xxx.com/public/general:v1.0" # 镜像地址 command: "cat" args: "" ttyEnabled: true resourceRequestCpu: "100m" resourceLimitCpu: "4000m" resourceRequestMemory: "100Mi" resourceLimitMemory: "8192Mi" - name: "jnlp" image: "jenkins/jnlp-slave:3.27-1" command: "jenkins-slave" args: "^${computer.jnlpmac} ^${computer.name}" resourceRequestCpu: "50m" resourceRequestMemory: "400Mi" resourceLimitMemory: "1536Mi" workspaceVolume: emptyDirWorkspaceVolume: memory: false volumes: - hostPathVolume: hostPath: "/var/run/docker.sock" mountPath: "/var/run/docker.sock" - hostPathVolume: hostPath: "jenkins_general_cache" mountPath: "/home/jenkins/general/pkg" - hostPathVolume: hostPath: "sonar_cache" mountPath: "/root/.sonar/cache" yaml: "spec:\r\n affinity:\r\n nodeAffinity:\r\n preferredDuringSchedulingIgnoredDuringExecution:\r\n - weight: 1\r\n preference:\r\n matchExpressions:\r\n - key: node-role.kubernetes.io/worker\r\n operator: In\r\n values:\r\n - ci\r\n tolerations:\r\n - key: \"node.kubernetes.io/ci\"\r\n operator: \"Exists\"\r\n effect: \"NoSchedule\"\r\n - key: \"node.kubernetes.io/ci\"\r\n operator: \"Exists\"\r\n effect: \"PreferNoSchedule\"\r\n containers:\r\n - name: \"general\"\r\n resources:\r\n requests:\r\n ephemeral-storage: \"1Gi\"\r\n limits:\r\n ephemeral-storage: \"10Gi\"\r\n securityContext:\r\n fsGroup: 1000\r\n "已将相干镜像上传到dockerhub,仓库为 leksas/kubesphere-sonnar-scanner:v1。 ...

March 1, 2021 · 2 min · jiezi