k8s
rocsdu
这个作者很懒,什么都没留下…
展开
-
使用rudr构建云原生应用
介绍OAM是构建云原生应用程序的规范专注于分离开发和运营需求,Open Application Model将模块化,可扩展和可移植的设计引入到Kubernetes等平台上,以构建和交付应用程序。rudr是开放应用模型规范(oam)的Kubernetes实现,允许用户轻松地在任何Kubernetes集群上部署和管理应用程序,而无需担心应用程序开发人员和运营商的问题Rudr目前处于Alp...原创 2019-12-03 18:55:46 · 1005 阅读 · 0 评论 -
中文文档
jaeger中文文档原创 2019-11-08 15:13:41 · 229 阅读 · 0 评论 -
metalb - 让本地集群使用LoadBalancer成为可能
介绍Kubernetes没有为裸机集群提供网络负载平衡器的实现(svc 类型为loadbalance),Kubernetes附带的Network LB的实现都是调用各种IaaS平台(GCP,AWS,Azure等)的粘合代码。如果您未在受支持的IaaS平台(GCP,AWS,Azure等)上运行,则LoadBalancers在创建时将无限期保持pending状态metalb解决了这种问题,使得裸...原创 2019-11-08 10:18:04 · 2902 阅读 · 1 评论 -
minikube 快速搭建k8s
minikube可以很方便的搭建一个单节点的k8s集群,在开发测试中非常方便,虽然可以一键启动但是还是记录下1.下载对应的kubelet和kubectl 添加PATHwget https://storage.googleapis.com/minikube/releases/v0.22.3/minikube-darwin-amd64 && mv minikube-darwin-amd64 /原创 2017-10-13 22:37:40 · 1399 阅读 · 1 评论 -
通过自定义prometheus数据实现k8s hpa
核心指标管道从 Kubernetes 1.8 开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取。 这些指标可以直接被用户访问(例如通过使用 kubectl top 命令),或由集群中的控制器使用(例如,Horizontal Pod Autoscale 可以使用这些指标作出决策)。Resource Metrics AP...原创 2018-03-14 22:03:54 · 6847 阅读 · 4 评论 -
自定义存储插件-Flexvolume vs Csi
从1.8版开始,Kubernetes Storage SIG停止接受树内卷插件,并建议所有存储提供商实施树外插件。目前有两种推荐的实现方式:容器存储接口(CSI)和Flexvolume。Flexvolume介绍lexvolume使用户能够编写自己的驱动程序并在Kubernetes中添加对卷的支持。如果–enable-controller-attach-detach启用Kubelet...原创 2018-03-14 22:05:25 · 6616 阅读 · 0 评论 -
自定义 kubectl-plugin
kubectl-pluginskubectl-plugins 是在 v1.8.0 发行版中作为 alpha 功能正式引入的。 因此,尽管插件功能的某些部分已经在以前的版本中可用,建议使用 1.8.0 或更高版本的 kubectl 版本.安装 kubectl 插件一个插件只不过是一组文件:至少一个 plugin.yaml 描述符,以及可能有一个或多个二进制文件、脚本或资产文件。 ...原创 2018-03-15 21:21:57 · 974 阅读 · 0 评论 -
管理pod的nat策略
关闭docker及flannel的snat策略关闭dockersnatdocker默认开启masq,可以通过 --ip-masq=false参数关闭masq关闭flannel snat策略flannel默认通过参数注入的方式开启masq:使用daemonset方式启动可以通过删除–ip-masq参数实现在系统直接部署的可以修改/usr/libexec/flannel...原创 2018-03-19 23:34:57 · 612 阅读 · 0 评论 -
k8s调度器扩展方式
调度器介绍scheduler 是k8s master的一部分,作为插件存在于k8s生态体系。自定义调度器方式添加功能重新编译实现自己的调度器(multi-scheduler)scheduler调用扩展程序实现最终调度(Kubernetes scheduler extender)添加调度功能k8s中的调度算法介绍预选 优选实现自己的调度器(配置多个sch...原创 2018-04-08 21:20:25 · 7012 阅读 · 3 评论 -
使用metric-server替换heapster实现基于mem/cpu的hpa
依赖k8s 1.8+安装prometheus监控使用 prometheus-operator安装prometheusgit clone https://github.com/coreos/prometheus-operatorcd prometheus-operatorkubectl apply -f ./contrib/kube-prometheus/manifests...原创 2018-07-31 14:02:49 · 864 阅读 · 0 评论 -
如何实现自己的crd controller
本文简单的实现了一个podipcontroller 并无实际用途,仅用于学习controller的实现package mainimport ( "flag" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" "k8s.i...原创 2018-08-27 10:27:15 · 1172 阅读 · 0 评论 -
基于k8s的纵向扩容介绍(VPA)
Vertical Pod Autoscaler VPA介绍安装关于向后兼容性的注意事项先决条件安装命令快速开始测试您的安装示例VPA配置故障排除VPA的组成部分删除alpha版本的已知限制相关链接原文Vertical Pod Autoscaler VPA)介绍Vertical Pod Autoscaler(VPA)使用户无需为其pods中的容器设置最新的资源request。配置后,它将根据使...翻译 2018-09-27 16:58:56 · 7724 阅读 · 0 评论 -
k8s hpa中的指标来源及实现
k8s hpa中的指标类型指标类型Object类型Pods类型Resource类型指标类型在autoscaling/v2beta1/HorizontalPodAutoscaler 中包含以下几种指标源类型:ObjectPodsResourceObject类型Object类型是用于描述k8s内置对象的指标,例如ingress对象中hits-per-second指标type Obj...原创 2018-09-29 11:50:44 · 4229 阅读 · 0 评论 -
k8s web terminal的实现
使用beego+sockjs写的实例:https://github.com/du2016/web-terminal-in-goweb terminal可以让我们更方便的访问container,执行shell命令,提高工作效率k8s本身实际上已经封装了docker的terminal api只需要很简单的操作就可以实现一个terminal,获取输入返回输出req := restc...原创 2017-10-13 21:56:15 · 10790 阅读 · 5 评论 -
Taints and Tolerations
node affnity是一种pod选择node的资源(表述倾向或者强制约束),taint是相反的,taint和toleration协同工作从而防止pod调度到不恰当的节点名上面,一个或多个taint可以被应用到node上面,标记了node不接收那些不能容忍这些污点的pod,耐受应用于pod,允许pods调度到有污点的节点上面使用 kubectl命令给node添加污点kubectl tai翻译 2017-09-13 16:05:23 · 1048 阅读 · 0 评论 -
k8s nodeSelector&affinity
1.分配pod到node的方法通过node label selector实现约束pod运行到指定节点,有两种方法 nodeSelector 以及affinity 2.nodeSelector 是k8s早起提供的节点选择器实现1)首先为nodes打对应的labelkubectl label nodes master disktype=ssd2)创建yaml文件cat >> n原创 2017-01-17 18:44:58 · 10545 阅读 · 0 评论 -
使用kubeadm部署kubernetes集群
kubeadm是1.4添加的新功能,使用kubeadm可以轻松的安装集群。1.安装kubelet 和kubeadmcat /etc/yum.repos.d/k8s.repo[kubelet]name=kubeletbaseurl=http://files.rm-rf.ca/rpms/kubelet/enabled=1gpgcheck=0EOFy原创 2016-09-27 10:43:38 · 8038 阅读 · 5 评论 -
k8s cm 启动过程分析
1.main函数k8s.io/kubernetes/cmd/kube-controller-manager/controller-manager.go注册健康检查到http.DefaultServeMuxfunc main() { // 根据默认配置创建cm对象 s := options.NewCMServer() // 添加flag s.AddFlags(pflag.Comman原创 2016-11-13 15:17:58 · 2384 阅读 · 0 评论 -
go-restful 简单学习
在k8s中启动的httpserver都使用了go-restful,简单学习下主要有webservice router container几个概念参考了官方的例子:https://github.com/emicklei/go-restful/blob/master/examples/restful-user-resource.gopackage mainimport ( "git原创 2016-11-14 18:29:07 · 3933 阅读 · 0 评论 -
添加calico到现有的kubernetes集群中
要求:1.已存在的k8s集群版本大于v1.1,想要使用NetworkPolicy,需要大于v1.3.02.可以被所有节点访问的etcd集群(可以和k8s共享etcd集群,但是最好建立一个独立的集群)calico组件:整合ks8/calico一共有三个组件:1.每个节点运行一个calico/node容器;包含了calico路由必须的bgp客户端2.calico-cni翻译 2016-11-10 11:04:30 · 6788 阅读 · 0 评论 -
k8s ingress详解(2)
这一篇讲一下ingress controller的实现入口控制器是一个守护进程,部署为一个Kubernetes Pod,这手表对服务器的API /进入到入口资源更新端点。它的工作是满足要求的入口ingress controller通过watch ingresses接口,动态更新ingress的资源写一个ingress controller官方的ingress control原创 2016-12-24 23:57:06 · 4945 阅读 · 1 评论 -
k8s ingress详解(1)
ingress 是除了 hostport nodeport clusterIP以及云环境专有的负载均衡器外比较灵活的服务访问方式,官方提供了Nginx通常情况下,服务和豆荚的IPS只有路由集群网络。在边缘路由器结束的所有流量要么丢弃或转发到别处。从概念上来说,这可能看起来像原创 2016-12-24 01:21:21 · 24136 阅读 · 7 评论 -
api访问方式
1.对于第一次时间通过kubectlkubectl config view2.访问rest api1)kubectl proxy 模式kubectl proxy --port=8080 &以类似反向代理的方式运行在kubectl所在的机器上可以直接在kubectl 所在的机器上curl http://localhost:8080/api/{ "versions":原创 2016-12-25 21:29:34 · 1406 阅读 · 0 评论 -
kubernetes networkpolicy
1.首先创建namespace隔离策略为DefaultDenykind: NamespaceapiVersion: v1metadata: name: testingnp annotations: net.beta.kubernetes.io/network-policy: | { "ingress": { "isolatio原创 2016-12-26 11:42:52 · 1506 阅读 · 0 评论 -
使用client-go 进行k8s相关操作-restclient(三)
restclient 是dynamic client和clientset的基础,支持json与protobuf,可以访问所有资源,实现对自定义thirdpartresource资源的获取示例代码:package mainimport ( "flag" "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/v1" "k8s.io原创 2017-01-14 15:05:09 · 6360 阅读 · 2 评论 -
使用client-go 进行k8s相关操作-clientset(一)
package mainimport ("flag""fmt""k8s.io/client-go/1.4/kubernetes""k8s.io/client-go/1.4/pkg/api""k8s.io/client-go/1.4/pkg/api/unversioned""k8s.io/client-go/1.4/pkg/api/v1""k8s.io/cli原创 2016-10-09 16:46:24 · 10439 阅读 · 4 评论 -
k8s thirdpartresource添加
主要使用了clientset 和restclient两种接口,通过对资源的定义以及资源实例的定义、注册,实现自定义资源加入自定义thirdpartresourcepackage mainimport ( "flag" "fmt" // "encoding/json" "k8s.io/client-go/kubernetes" "k8s.io/client-go/原创 2017-01-14 15:49:49 · 1686 阅读 · 0 评论 -
k8s1.4 新特性
主题:1.简化用户体验 添加了kubeadm命令安装集群,更容易了解集群http://kubernetes.io/docs/getting-started-guides/kubeadm/添加api auditlog http://kubernetes.io/docs/admin/audit/2.有状态应用程序支持StorageClasses http://kuber原创 2016-09-27 13:18:24 · 1953 阅读 · 0 评论