阿里云容器服务
如果一个用户账号下有多个集群的情况,希望将一个应用同时发布到多个集群里面,并且不同集群环境有不同的参数,这里就可以使用应用中心的多集群发布功能。
适用场景 • 希望使用应用中心 • 有自己git仓库(包括github,bitbucket,自己搭建的gitlab) • 部署模板托管在git
近期CNCF宣布欢迎Argo项目进入 CNCF 孵化器,作为一个新加入的项目,Argo主要关注于Kubernetes原生的工作流,持续部署等方面。 Argo项目是一组Kubernetes原生工具集合,用于运行和管理Kubernetes上的作业和应用程序。
自去年年初开始放风Helm v3将要开始开发,到去年年底KubeConn 上海被一堆人追问到底啥时候发版本。今年五月份,Helm v3 终于发布了第一个alpha版本,让我们来一窥新版本的Helm 到底带来了什么。
Kube Scheduler 源码分析 Kube Scheduler 是负责k8s 集群最终Pod 应该部署到哪台机器的决策者,本章来走读一下Scheduler 基本流程源码。 func NewSchedulerCommand() *cobra.
Kube Controller Manager 源码分析 Controller Manager 在k8s 集群中扮演着中心管理的角色,它负责Deployment, StatefulSet, ReplicaSet 等资源的创建与管理,可以说是k8s的核心模块,下面我们以概略的形式走读一下k8s Controller Manager 代码。
几乎所有的Controller manager 和CRD Controller 都会使用Client-go 的Informer 函数,这样通过Watch 或者Get List 可以获取对应的Object,下面我们从源码分析角度来看一下Client go Informer 的机制。
external-dns 阿里云容器服务实战 受Kubernetes的集群内部DNS服务器Kubernetes DNS的启发,ExternalDNS使Kubernetes资源可通过公共DNS服务器配置与发布。
分批发布是一种通用的发布方式,但是在Kubernetes集群中,要实现分批发布,需要控制各种状态,维护service流量,以及各种label配置,十分麻烦。阿里云容器服务提供一种基于 CRD 的分批发布方式,大大方便发布流程。
前言 上文介绍了如何使用Ingress实现蓝绿发布。但是对于很多只提供tcp/udp的服务来说,七层的ingress不能很好的实现蓝绿发布的需求。这里我们就来介绍一下如何使用 SLB 来进行四层的金丝雀发布。
背景 在发布应用时,经常需要先上线一个新版本,用较小的流量去测试一下该新版本的可用性。但是Kubernets的ingress resource 并没有实现流量控制与切分的功能,导致针对同一个域名下的路径,只能有一个service来进行服务。
盼望着,盼望着,终于到了新书预售的这一天。当看到封面的那一刻,硕大的一个手折鲸鱼跃然于首页,仿佛这一段时间的辛苦片刻烟消云散,只剩下无尽的激动,恨不得把他扣下来好好抱着抚摸一番。 看过无数本书,见过无数次 本书ISBN号为XXX, 2017年第一次印刷,电子工业出版社出版。
构造简单容器 本章我们即将开始真正踏上构造自己的容器道路上。我们会基于当前的操作系统创建一个与宿主机隔离的容器环境,并且配置上基本的文件系统与网络。最后会在容器内运行一些应用来使用我们的容器,是不是很激动,下面我们开始吧。
Linux Namespace 介绍 我们经常听到说Docker 是一个使用了Linux Namespace 和 Cgroups 的虚拟化工具,但是什么是Linux Namespace 它在Docker内是怎么被使用的,说到这里很多人就会迷茫,下面我们就先介绍一下Linux Namespace
追踪代码中的错误可能是一件非常头疼的事情。这在高度依赖goroutine的Golang代码调试中更加的突出。我来介绍一个专门为 Go而生的 debug 工具,解决开发者在使用 GDB 调试中遇到的各种各样的问题。
生产环境部署的服务都会考虑单点失效情况下的高可用性。在容器服务中,当节点失效的时候,能否重新调度容器到健康节点上继续提供服务对于生产环境中的服务高可用性尤为重要。
快速方便的测试集群中,跨 host 间容器网络互通性很重要,这里提供一个简单的compose file实现一键部署,访问endpoint就可以检查容器互通性,方便直观。
heapster 或者metrics server API 可以
Serverless 目前适合无状态的服务 比如离线计算,基因计算,机器学习等,对于需要long run 的服务还是不建议
docker run -m 可以指定内存限制
可以使用 registry.cn-hangzhou.aliyuncs.com/acs/aliyun-ingress-controller:v0.20.0.1-4597ce2-aliyun
看起来是chartmuseum 启动有问题 可以kubectl logs -f 查看一下chartmuseum 的 pod 日志,看一下具体问题
看一下你打包的时候 Chart.yaml 里面version 和appVersion 是否变更增加1
可以尝试更换一下浏览器或者清空一下缓存试一下
内网 IP 需要在同一个 VPC 内 ping
Helm fetch --unatr
历史原因,当初的 k8s 系统不完善,没有用户和鉴权体系,导致 tiller 想做一套自己的用户体系
阿里云提供了gcr.io 托管tiller 镜像,
registry.cn-hangzhou.aliyuncs.com/acs/tiller:v2.8.2
Helm chart 使用的就是标准yaml ,只不过内嵌了{{}}等动态模板语言规则,这个是Go Template 模板语言的通用方式
Helm 后面会有helm login 功能,使用方式和docker login 一模一样
Helm 可以很好的管理chart,具有版本管理,历史回溯,快速回滚功能,这个是简单的使用编排模板所不能比拟的
一般而言,Helm Release 内含资源比较多的时候,Helm delete 速度会非常慢。原因是这个命令是一个同步命令,他会等待所有资源删除完毕才会返回。 这里可以考虑发出删除命令后 ,就使用Helm ls 异步来 query release 状态,直到删除成功
Helm 模板使用的是 Go Tmplate,语义已经比较丰富了,kustomize 优势并不明显。
不过Helm V3会借用Lua 的能力集成多种模板语言
Helm values 文件是直接存在chart tgz 压缩包内的,可以和Chart 压缩包一起托管在Http server backend
看起来应该是 URL 书写错误
可以提工单解决