kubernetes组件

@(马克飞象)[k8s]


组件

kubernetes除了必备的dns和网络组件外,官方推出大量的cluster-monitoring,dashboard,fluentd-elasticsearch,node-problem-detector,registry

官方提供的大部分组件,都以NodePort暴露服务,并且只允许在master节点上

heapster

k8s的监控组件,自动伸缩与及Dashboard 都依赖与它.

cd /data
git clone https://github.com/kubernetes/heapster.git
kubectl apply -f /data/heapster/deploy/kube-config/influxdb/

influxdb 默认没有配置数据持久化, 可以结合各自的数据持久化方案进行部署,以便保留监控历史

安装完heapster组件后,可以便捷使用kubectl top node,kubectl top pod 列出高负载的资源

kubectl top node -n kube-system
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
10-8-44-35 162m 4% 1045Mi 13%
10-8-50-182 77m 1% 1132Mi 14%
10-8-113-246 156m 3% 674Mi 8%
10-8-36-34 166m 4% 904Mi 11%
kubectl top pod -n kube-system
NAME CPU(cores) MEMORY(bytes)
kube-dns-2924299975-363jm 1m 32Mi
kube-apiserver-10-8-113-246 6m 84Mi
dummy-2088944543-05z36 0m 0Mi
kube-proxy-mcb3t 18m 18Mi
calico-policy-controller-shv0f 4m 16Mi
canal-node-rc2t6 2m 57Mi

dashboard

由kubernetes的UI演变而来, 目前已经集成监控展示与日常的创建与删除操作, 另一方面,可以通过ui界面来学习kubernetes的使用,认识常用的配置类型

https://github.com/kubernetes/dashboard#kubernetes-dashboard

kubectl get pods --all-namespaces | grep dashboard
kubectl get po,svc --all-namespaces | grep dashboard
kube-system po/kubernetes-dashboard-3095304083-ltq8k 1/1 Running 0 53s
kube-system svc/kubernetes-dashboard 10.105.98.204 <nodes> 80:32624/TCP 53s

通过10.105.98.204 进行访问

node-problem-detector

node经常会遇到以下问题:

  • 硬件问题: cpu 内存 磁盘
  • 内核问题: 内核死锁, 文件系统损坏
  • 容器问题: 守护进程无响应

kubernetes集群管理对node的健康状态是无法感知的, pod依旧会调度到有问题的node上, 通过DaemonSet部署node-problem-detector, 向apiserver上报node的状态信息,使node的健康状态对上游管理可见,pod不会再调度到有异常的node上.

https://github.com/kubernetes/node-problem-detector

wget https://raw.githubusercontent.com/kubernetes/node-problem-detector/master/config/kernel-monitor.json
mkdir config
mv kernel-monitor.json config/
kubectl create configmap node-problem-detector-config --from-file=config/ -n kube-system
wget https://raw.githubusercontent.com/kubernetes/node-problem-detector/master/node-problem-detector.yaml
kubectl apply -f node-problem-detector.yaml -n kube-system

DNS Horizontal Autoscaler

根据apiserver获取集群的状态信息, 实现dns服务的水平扩展, 有助于提高dns的服务能力.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/dns-horizontal-autoscaler/dns-horizontal-autoscaler.yaml

fluentd-elasticsearch

fluentd-elasticsearch 是kubernetes 官方提供的容器日志收集方案, 个人也认为,这是目前最好的面向kubernetes日志方案.官网的版本太旧,我制作了一个最新版本的, 只收集容器的日志.

git clone https://github.com/caiwenhao/kube-addons.git
cd kube-addons/fluentd-elasticsearch
kubectl apply -f es-deploy.yaml -f kibana-deploy.yaml -f es-deploy.yaml
kubectl label node 10-8-50-182 alpha.kubernetes.io/fluentd-ds-ready=true
  1. 通过elasticsearch-cloud-kubernetes,实现es在k8s集群上的部署.
  2. fluentd 的插件fluent-plugin-kubernetes_metadata_filter 通过apiserver,当pod创建的时候,建立日志目录映射关系, 并解析kubernetes日志格式.

进一步优化

把fluent.conf放入configMap

kubectl create configmap fluent  --from-file=./fluent.conf -n kube-system

kubernetes组件的更多相关文章

  1. 构建Docker平台【第三篇】安装 kubernetes 组件

    第一步:准备 1. 安装包: kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm kubernetes-cni-0.3.0.1-0.07a8a ...

  2. centos7下kubernetes(4.kubernetes组件)

    Kubenetes cluster 由master和node组成 Master是kubenetes的大脑.运行着以下进程:kube-apiserver.kube-scheduler.kube-cont ...

  3. Kubernetes组件与架构

    转载请标明出处: 文章首发于>https://www.fangzhipeng.com/kubernetes/2018/09/30/k8s-basic1/ 本文出自方志朋的博客 Kubernete ...

  4. Kubernetes【K8S】(一):Kubernetes组件

    什么是Kubernetes ​ Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes拥有一个庞大且快速增长的生态系统. ...

  5. 使用 C# 开发 Kubernetes 组件,获取集群资源信息

    写什么呢 前段时间使用 C# 写了个项目,使用 Kubernetes API Server,获取信息以及监控 Kubernetes 资源,然后结合 Neting 做 API 网关. 体验地址 http ...

  6. Kubernetes组件-ReplicaSet

    ⒈简介 最初,ReplicationController是Kubernetes用于复制和在异常时重新调度节点的唯一组件,后来Kubernetes又引入了一个名为ReplicaSet的类似资源.它是新一 ...

  7. Kubernetes学习笔记之认识Kubernetes组件

    前言:笔记知识点来源于Kubernetes官方文档说明,链接:https://kubernetes.io/docs/concepts/overview/components/ ,本记录仅仅是学习笔记记 ...

  8. Kubernetes 组件简介

    关于Kubernetes是什么??? Kubernetes是致力于提供跨主机集群的自动部署.扩展.高可用以及运行应用程序容器的平台. Kubernets集群组成有哪些??? k8s由master和no ...

  9. Kubernetes组件介绍

    一.api-server   基本概念 该端口默认值为6443,可通过启动参数"--secure-port"的值来修改默认值. 默认IP地址为非本地(Non-Localhost)网 ...

随机推荐

  1. ie下面兼容性问题的一些总结

    最后一次搞ie兼容性问题,以后都可以不管了0.0 1.浮动兼容性 1.1IE6下的双边距BUG 在IE6下,块元素有浮动和横向margin的时候,最边上元素的横向margin值会被放大成两倍 解决办法 ...

  2. C#实现发送邮件

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. xmpp发送文件

    xmpp 文件传输协议: XEP-0096: SI File Transfer:文件传输流初始化协议 XEP-0065: SOCKS5 Bytestreams:带外socks5代理字节流传输协议 XE ...

  4. iOS 中的传值方式

    一. 属性传值   将A页面所拥有的信息通过属性传递到B页面使用 很常用的传值,也很方便,但是要拿到类的属性.例如: B页面定义了一个naviTitle属性,在A页面中直接通过属性赋值将A页面中的值传 ...

  5. cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析

    转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...

  6. 【转载】如何学习javascript

    如何学习Javascript 作者: chaomao  首先要说明的是,咱现在不是高手,最多还是一个半桶水,算是入了JS的门. 谈不上经验,都是一些教训. 这个时候有人要说,“靠,你丫半桶水,凭啥教我 ...

  7. 安卓环境搭建(1)hellow world

    本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始Andr ...

  8. python使用platform模块获取系统环境并去除换行符

    近来在porting一个网站,企图拿到这个网站的数据来做分析.为了支持多系统环境的正常运行.需要知道当前系统环境的是什么OS? 1.python内置platform库.可以很方便得到当前系统环境时什么 ...

  9. gets与scanf

    gets与scanf 从功能上可以看出不同之处:1 终止条件不同: gets只有遇到\n时才会结束输入,而scanf遇到空格或制表符时,也会结束输入.比如输入"test string\n&q ...

  10. a标签的 target 使用

    <a target="_blank" href="www.baidu.com" onclick="return test()"> ...