Kubernetes
文章平均质量分 96
哎_小羊_168
学会发现,学会记录,学会分享。Fighting!
展开
-
初试 Kubernetes 集群中使用 Traefik 反向代理
我们经常使用 Nginx、Apache 等工具作为反向代理、负载均衡,而 Træfik 是一个为了让部署微服务更加便捷而诞生的 HTTP 反向代理、负载均衡工具。它支持多种后台 (Docker、Swarm、Kubernetes、Mesos、Etcd...) 来自动刷新配置文件,以实现快速地服务发现。在 Kubernetes 集群中,可以完全替代 ngxin + Ingress Controller,快速实现服务的暴漏原创 2017-11-17 09:47:20 · 19340 阅读 · 7 评论 -
学习 Kubernetes 原生 Serverless 无服务架构 Kubeless
Serverless 就是指应用的开发不再需要考虑服务器的硬件基础设施,而是依赖于第三提供的后端服务(Baas)和应用逻辑运行容器(FaaS),但是并不是意味着没有服务器,而是服务器以特定功能的第三方服务的形式存在。Kubeless 是 Kubernetes 原生无服务器架构,目的是为了方便部署少量代码而不需要担心底层基础设施,它利用 Kubernetes 资源来提供自动缩放、API 路由、监控、故障排查等功能。Kubeless 是利用 CRD 自定义资源类型来实现其整个流程。原创 2018-09-04 10:21:29 · 4973 阅读 · 8 评论 -
学习基于 Kubernetes 的 Serverless 无服务架构 Fission
Serverless 就是指应用的开发不再需要考虑服务器的硬件基础设施,而是依赖于第三提供的后端服务(Baas)和应用逻辑运行容器(FaaS),Fission 是由 Platform9 维护的一个开源的项目,它是基于 Kubernetes 的无服务框架。我们可以编写任何语言的 Function 代码,只需要一条简单的命令既可以完成整个 Function 的部署及扩展,而且过程中不会创建任何容器,不需要管理任何 Docker 仓库,最终将其映射(或其他 triggers)到 HTTP 请求供外部访问。原创 2018-09-13 10:39:38 · 3785 阅读 · 2 评论 -
Kubernetes 集群使用 NFS 网络文件存储
Kubernetes PersistentVolumes 持久化存储方案中,提供两种 API 资源方式: PersistentVolume 和 PersistentVolumeClaim。PV 可理解为集群资源,PVC 可理解为对集群资源的请求,Kubernetes 支持很多种持久化卷存储类型。NFS 是网络文件存储系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。原创 2018-11-12 10:46:28 · 9751 阅读 · 2 评论 -
使用 client-go 对 Kubernetes 进行自定义开发及源码分析
client-go 是一种能够与 Kubernetes 集群通信的客户端,通过它可以对 Kubernetes 集群中各资源类型进行 CRUD 操作,它有三大 client 类,分别为:Clientset、DynamicClient、RESTClient。通过它,我们可以很方便的对 Kubernetes 集群 API 进行自定义开发,来满足个性化需求。本文介绍如何使用 client-go 对 k8s 集群进行自定义开发及源码分析。原创 2018-12-03 10:52:47 · 5905 阅读 · 0 评论 -
Kubernetes 集群基于 Rook 的 Ceph 存储之块设备、文件系统、对象存储
Ceph 是一个开源的分布式存储系统,包括对象存储、块设备、文件系统。它可靠性高、管理方便、伸缩性强,能够轻松应对 PB、EB 级别数据。Rook 是专用于 Cloud-Native 环境的文件、块、对象存储服务。它实现了一个自动管理的、自动扩容的、自动修复的分布式存储服务。Rook 支持 Ceph 存储,基于 Kubernetes 使用 Rook 可以大大简化 Ceph 存储集群的搭建以及使用其块设备、文件系统、对象存储功能。原创 2019-01-14 09:50:12 · 8612 阅读 · 28 评论 -
Kubernetes 集群基于 Rook 搭建 Ceph 分布式存储系统
Rook 是专用于 Cloud-Native 环境的文件、块、对象存储服务。它实现了一个自动管理的、自动扩容的、自动修复的分布式存储服务。Rook 支持自动部署、启动、配置、分配、扩容/缩容、升级、迁移、灾难恢复、监控以及资源管理,Rook 目前支持 Ceph、NFS、Minio Object Store、Edegefs、Cassandra、CockroachDB 存储的搭建,后期会支持更多存储方案。本文将在 Kubernetes 基于 Rook 搭建 Ceph 分布式存储系统原创 2019-01-10 09:52:50 · 8931 阅读 · 0 评论 -
国内环境下 Kubernetes 源码编译及运行
kubernetes 源码编译,分为本地二进制可执行文件编译和 docker 镜像编译两种,不管哪种方式,都是直接使用并不需要修改任何 k8s 代码。当我们有特殊需求时,比如需要修改 kube-proxy 对 service 的代理逻辑等,就需要修改 k8s 源码了,为了让修改的代码生效,就需要对 k8s 代码执行编译了。当然 k8s 也提供了 CRD 等可扩展插件,在不修改 k8s 源码的基础上实现自定义功能,但对于底层逻辑策略需要修改的话,还是办不到的。国内环境下 Kubernetes 源码编译及运行。原创 2019-02-25 15:01:12 · 7263 阅读 · 3 评论 -
Rancher 2.x 负载均衡配置及使用
Kubernetes 支持 4 层和 7 层负载均衡策略,其中 4 层负载均衡(或外部负载均衡)支持转发 HTTP、TCP 请求到 Nodeports 上去,7 层负载均衡(或 Ingress Controller)支持根据 Host、Path 的负载均衡以及 SSL 终端,因为它只支持转发 HTTP 和 HTTPS 的请求,所以它需要监听 80 和 443 端口。RKE 集群部署 7 层负载均衡底层默认支持 Nginx Ingress Controller 类型。原创 2019-03-19 15:50:44 · 32355 阅读 · 15 评论 -
Docker/K8s 解决容器内时区不一致方案
使用 docker 容器启动服务后,如果使用默认 Centos 系统作为基础镜像,就会出现系统时区不一致的问题,因为默认 Centos 系统时间为 UTC 协调世界时 (Universal Time Coordinated),一般本地所属时区为 CST(+8 时区,上海时间),时间上刚好相差 8 个小时。这就导致了,我们服务启动后,获取系统时间来进行相关操作,例如存入数据库、时间换算、日志记录等,都会出现时间不一致的问题,所以很有必要解决掉容器内时区不统一的问题。原创 2019-03-08 10:12:58 · 20796 阅读 · 3 评论 -
Rancher 2.x 搭建及管理 Kubernetes 集群
Rancher 是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。Rancher可以轻松地管理各种环境的 Kubernetes,满足IT需求并为 DevOps 团队提供支持。Rancher 用户可以选择使用 RKE 创建 K8s 集群,也可以使用 GKE,AKS 和 EKS 等云K8s 服务。Rancher 用户还可以导入和管理现有的 Kubernetes 集群。同时 Rancher UI 为 DevOps 工程师提供了一个直观的用户界面来管理他们的服务容器。原创 2019-03-16 16:32:03 · 51285 阅读 · 13 评论 -
Rancher 2.x 一键式部署 Prometheus + Grafana 监控 Kubernetes 集群
Prometheus 是一套开源的系统监控、报警、时间序列数据库的组合,Prometheus 基本原理是通过 Http 协议周期性抓取被监控组件的状态,而通过 Exporter Http 接口输出这些被监控的组件信息,而且已经有很多 Exporter 可供选择。Grafana 是一个可视化仪表盘,它拥有美观的图标和布局展示,功能齐全的仪表盘和图形编辑器,默认支持很多数据源类型,我们可以将 Prometheus 抓取的数据,通过 Grafana 优美的展示出来,非常直观。通过 Rancher 一键安装他们。原创 2019-04-01 10:40:26 · 12626 阅读 · 4 评论 -
K8s 集群使用 ConfigMap 优雅加载 Spring Boot 配置文件
我们知道 Spring Boot 工程默认的配置文件名称为 application.properties,有三种方式来运行时指定运行哪个环境的配置文件,kubernetes 中可通过ConfigMap 来实现对容器中应用的配置管理,ConfigMap API 资源提供了将配置数据注入容器的方式,这里主要介绍 K8s 集群如何使用 ConfigMap 优雅加载 Spring Boot 配置文件原创 2019-05-12 09:48:28 · 37214 阅读 · 3 评论 -
使用 febootstrap 制作自定义基础镜像
febootstrap 是一个方便我们制作原生 OS 基础镜像的工具,例如 Centos、Ubuntu 等操作系统,同时还可以指定安装一些特定软件到环境镜像里头,可以使我们更方便的了解和控制基础镜像的构成,最后,通过该基础镜像在扩展成应用镜像,最终来部署服务,可以使用 febootstrap 制作自定义基础镜像原创 2019-06-09 20:52:01 · 4030 阅读 · 0 评论 -
Kubernetes 使用 PodPreset 注入信息到 Pods
PodPreset 是一种 K8s API 资源,用于在创建 Pod 时注入其他运行时需要的信息,这些信息包括 secrets、volume mounts、environment variables 等,我们可以使用标签选择器来指定某个或某些 Pod,来将 PodPreset 预设信息应用上去。使用 PodPreset 的好处就是我们可以将一些常用 Pod 预设信息配置为模板,这样就不需要显式为每个 Pod 提供所有信息,简化 Pod 初始化配置,还能起到配置统一的效果。原创 2019-07-07 16:03:05 · 5484 阅读 · 0 评论 -
Kubernetes CRD (CustomResourceDefinition) 自定义资源类型
Kubernetes 中一切都可视为资源,它提供了很多默认资源类型,能够满足大多数日常系统部署和管理的需求。在一些特殊的需求场景下,这些现有资源类型就满足不了,那么这些就可以抽象为 Kubernetes 的自定义资源,在 Kubernetes 1.7 之后增加了对 CRD 自定义资源二次开发能力来扩展 Kubernetes API,通过 CRD 可以向 Kubernetes API 中增加新资源类型,而不需要修改源码或创建自定义的 API server,该功能大大提高了 Kubernetes 的扩展能力原创 2018-08-20 18:44:18 · 22407 阅读 · 4 评论 -
部署 Prometheus Operator 监控 Kubernetes 集群
我们知道 Prometheus 是一套开源的系统监控、报警、时间序列数据库的组合,而 Prometheus Operator 是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控制器,它是为了简化在 Kubernetes 上部署、管理和运行 Prometheus 和 Alertmanager 集群。本文介绍如何使用 Prometheus Operator 部署监控 Kubernetes 集群,并通过 Grafana 查看监控信息。原创 2018-08-14 09:55:19 · 21061 阅读 · 7 评论 -
初试 Kubernetes 暴漏服务类型之 Nginx Ingress
Kubernetes 暴露服务的三种方式:LoadBlancer Service、NodePort Service、Ingress。官网对 Ingress 的定义为管理对外服务到集群内服务之间规则的集合,通俗点讲就是定义规则来允许进入集群的请求被转发到集群中对应服务上,从来实现服务暴漏。 Ingress 能把集群内 Service 配置成外网能够访问的 URL,流量负载均衡,终止SSL,提供基于域名访问的虚拟主机等原创 2017-11-09 09:23:59 · 19257 阅读 · 4 评论 -
部署 Kubernetes 集群日志插件 Fluentd、Elasticsearch、Kibana
对于任何基础架构或者服务系统,日志重要性不言而喻,当然 Kubernetes 也少不了对 Logging 的支持,官方给出了 Cluster-level Logging 的架构,其中就提供使用 EFK 框架作为集群日志解决方案。当然 EFK / ELK 在业内也是相对成熟作为日志集中分析平台,ELK 在 Kubernetes 集群中以 Pod 方式运行,丝毫不影响集群中其他 Pod,而且不需要修改其他 Pod 配置。原创 2017-11-06 10:10:57 · 16875 阅读 · 3 评论 -
minikube 安装 Kubernetes Dashboard 并集成 Heapster
Kubernetes Dashboard 它是官方提供的用户管理 Kubernetes 集群可视化工具。通过它我们可以直观的看到集群各资源、工作负载、服务发现与负载均衡以及配置存储等信息。同时也可以安装其他插件如Heapster, 来图形化展示各资源使用率信息,它还在持续更新中,相信以后会有更加丰富的功能提供给我们。原创 2017-10-26 17:02:37 · 6294 阅读 · 4 评论 -
初试 minikube 本地部署运行 kubernetes 实例
Kubernetes 是 Google 开源的容器集群管理系统,它构建在目前流行的 Docker 技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一整套功能。而就在日前 DockerCon 欧洲大会上, Docker 宣布拥抱支持 Kubernetes,Docker 公司计划提供一个无缝平台,同时支持包含 Swarm 和 Kubernetes 集群的异构部署。原创 2017-10-24 17:10:40 · 21500 阅读 · 5 评论 -
初试 Kubernetes 动态卷配置使用 RBD 作为 StorageClass
Kubernetes 集群存储 PV 支持 Static 静态配置以及 Dynamic 动态配置,动态卷配置 (Dynamic provisioning) 可以根据需要动态的创建存储卷。之前的静态配置方式,集群管理员必须手动调用云/存储服务提供商的接口来配置新的固定大小的 Image 存储卷,然后创建 PV 对象以在 Kubernetes 中请求分配使用它们。通过动态卷配置,能自动化完成以上两步骤,它无须集群管理员预先配置存储资源,而是使用 StorageClass 对象指定的供应商来动态配置存储资源。原创 2018-01-21 14:22:40 · 8857 阅读 · 7 评论 -
初试 Kubernetes 集群使用 CephFS 文件存储
Kubernetes PersistentVolumes 持久化存储方案中,提供两种 API 资源方式: PersistentVolume(简称PV) 和 PersistentVolumeClaim(简称PVC)。PV 可理解为集群资源,PVC 可理解为对集群资源的请求,Kubernetes 支持很多种持久化卷存储类型。Ceph 是一个开源的分布式存储系统,支持对象存储、块设备、文件系统,具有可靠性高、管理方便、伸缩性强等特点。本文介绍初始 Kubernetes 集群使用 CephFS 文件存储原创 2018-01-14 15:26:35 · 14560 阅读 · 0 评论 -
初试 Kubernetes 集群使用 Ceph RBD 块存储
Kubernetes PersistentVolumes 持久化存储方案中,提供两种 API 资源方式: PersistentVolume(简称PV) 和 PersistentVolumeClaim(简称PVC)。PV 可理解为集群资源,PVC 可理解为对集群资源的请求,Kubernetes 支持很多种持久化卷存储类型。Ceph 是一个开源的分布式存储系统,支持对象存储、块设备、文件系统,具有可靠性高、管理方便、伸缩性强等特点。本文介绍 Kubernetes 集群使用 Ceph RBD 块存储。原创 2018-01-08 10:03:32 · 21982 阅读 · 16 评论 -
国内使用 kubeadm 在 Centos 7 搭建 Kubernetes 集群
目录Kubeadm 介绍环境、软件准备软件安装配置 镜像准备安装 Docker安装并配置 Kubernetes 组件初始化 Master安装 Flannel 网络组件部署 Node 节点安装 Kubernetes DashboardDashboard 集成 Heapster安装过程问题总结1、kubeadm 介绍 Kubernetes 是 Google原创 2017-11-01 10:42:03 · 20470 阅读 · 9 评论 -
初试 Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台
Helm 是一个管理 Kubernetes Charts 的工具,Charts 可以理解为预先配置的 Kubernetes 资源包,通过 Helm 可以轻松的安装和管理 Kubernetes 应用,类似我们平时使用的 apt、yum、homebrew 工具。本文介绍如何在 Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台。原创 2018-03-07 09:57:17 · 9230 阅读 · 31 评论 -
使用 Spinnaker 自动化部署代码到 Kubernetes 示例
本文介绍如何使用 Spinnaker自动化部署代码到 Kubernetes 中,主要包含如下:GitHub 配置、DockerHub 配置、Kubernetes & Spinnaker 配、Spinnaker 集群管理(创建应用、创建负载均衡策略、创建服务组)、Spinnaker 部署管理(创建自动部署 Dev 流程、创建验证流程、创建自动部署 Prod 流程、运行并验证流程)原创 2018-03-17 14:18:47 · 12856 阅读 · 5 评论 -
初试 Kubernetes 集群中 Spinnaker 平台之集群管理
Spinnaker 是 Netflix 的开源项目,是一个持续交付平台,它提供在多种平台上实现开箱即用的集群管理和部署功能的平台。我们可以通过其强大的集群管理特性,来查看和管理集群中的资源。集群管理主要包括服务组(Server Group)、集群(Cluster)、应用(Applications)、负载均衡(Load Balancer)、安全组(Security Group)几大块。本文介绍在 Kubernetes 集群中 Spinnaker 平台何如进行集群管理。原创 2018-03-13 11:58:38 · 3053 阅读 · 1 评论 -
初试 Jenkins 使用 Kubernetes Plugin 完成持续构建与发布
持续构建与发布是我们日常工作中必不可少的一个步骤,目前大多公司都采用 Jenkins 集群来搭建符合需求的 CI/CD 流程,然而传统的 Jenkins Slave 一主多从方式会存在一些痛点,比如:主 Master 发生单点故障时,整个流程都不可用了;每个 Slave 的配置环境不一样,维护起来也是比较费劲;资源分配不均衡。基于 Kubernetes 搭建 Jenkins 集群,具有服务高可用,动态伸缩,合理使用资源,扩展性好特点。原创 2018-03-31 11:56:47 · 44883 阅读 · 11 评论 -
Kubernetes 集群使用 Helm 搭建 GitLab 并配置 Ingress
Helm 是一个管理 Kubernetes Charts 的工具,Charts 可以理解为预先配置的 Kubernetes 资源包,通过 Helm 可以轻松的安装和管理 Kubernetes 应用,类似我们平时使用的 apt、yum、homebrew 工具。服务端 Tiller 运行在 Kubernetes 集群内部,作为一个代理 Pod 管理安装我们的 Charts。本文介绍 Kubernetes 集群使用 Helm 搭建 GitLab 并配置 Ingress原创 2018-07-15 21:16:13 · 13608 阅读 · 3 评论 -
Kubernetes 集群中运行 GitLab-Runner 来执行 GitLab-CI
GitLab-CI 是一套 GitLab 提供给用户使用的持续集成系统。GitLab-Runner 是配合 GitLab-CI 进行使用的,GitLab 里面每个工程都会定义一些该工程的持续集成脚本,该脚本可配置一个或多个 Stage 例如构建、编译、检测、测试、部署等。当工程有代码更新时,GitLab 会自动触发 GitLab-CI,此时 它会找到事先注册好的 GitLab-Runner 通知并触发该 Runner 来执行预先定义好的脚本,介绍 Kubernetes 集群中运行 GitLab-Runner原创 2018-07-21 21:19:17 · 18721 阅读 · 5 评论 -
Spring Boot 项目转容器化 K8S 部署实用经验分享
Kubernetes 是 Google 开源的容器集群管理系统,它构建在目前流行的 Docker 技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一整套功能,用于容器集群的自动化部署、扩容以及运维的开源平台。Spring Boot 是 Spring 框架的集成,通过该框架可以大大简化应用的搭建以、开发及部署过程,从而深受大家喜爱。之前 Spring Boot 项目大多以传统虚拟机或物理机部署方式,转容器化 K8S 集群部署的话,也是非常简单的,分享一下实际操作中的一些使用经验。原创 2019-07-21 17:47:23 · 8171 阅读 · 2 评论