摘要: 集群其他组件全部完成后我们应当部署集群 DNS 使 service 等能够正常解析,1.11版本coredns已经取代kube-dns成为集群默认dns. 1)下载yaml配置清单 [root@k8s-master01 ~]# mkdir /opt/k8s/coredns [root@k8s-master01 ~]# cd /opt/k8s/coredns/ [root@k8s-master01 coredns]# wget https://raw.githubusercontent.c…
Ingress是kubernetes集群对外提供服务的一种方式.ingress部署相对比较简单,官方把相关资源配置文件,都已经集合到一个yml文件中(mandatory.yaml),镜像地址也修改为quay.io. 1.部署 官方地址:https://github.com/kubernetes/ingress-nginx 1.1 下载部署文件: ## mandatory.yaml为ingress所有资源yml文件的集合### 若是单独部署,需要分别下载configmap.yaml.namespa…
集群部署好后,如果我们想知道集群中每个节点及节点上的pod资源使用情况,命令行下可以直接使用kubectl top node/pod来查看资源使用情况,默认此命令不能正常使用,需要我们部署对应api资源才可以使用此命令.从 Kubernetes 1.8 开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取, metrics-server 替代了heapster.Metrics Server 实现了Resource Metrics API…
Dashboard是k8s的web界面,用户可以用 Kubernetes Dashboard 部署容器化的应用.监控应用.并对集群本身进行管理,在 Kubernetes Dashboard 中可以查看集群中应用的运行状态. 1.下载yaml配置文件 wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml 2.创建dash…
Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控制器,它是为了简化在 Kubernetes 上部署.管理和运行 Prometheus 和 Alertmanager 集群. 官方提供的架构图: kubernetes也在官方的github上关于使用prometheus监控的建议: 地址:https://github.com/kubernetes/ku…
摘要: 前面几个篇幅,已经介绍master与node节点集群组件部署,由于K8S本身不支持网络,当 node 全部启动后,由于网络组件(CNI)未安装会显示为 NotReady 状态,需要借助第三方网络才能进行创建Pod,下面将部署 Calico 网络为K8S提供网络支持,完成跨节点网络通讯. 官方文档 https://docs.projectcalico.org/v3.6/introduction 1)下载Calico yaml [root@k8s-master01 ~]# mkdir /op…
摘要: kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问 新版本目前 kube-proxy 组件全部采用 ipvs 方式负载,所以为了 kube-proxy 能正常工作需要预先处理一下 ipvs 配置以及相关依赖(每台 node 都要处理) ## 开启ipvs [root@k8s-master01 ~]# ansible k8s-node -m shell -a "yum install…
摘要: Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volumes 3.下载pod的secret 4.通过docker/rkt来运行pod中的容器 5.周期的执行pod中为容器定义的liveness探针 6.上报pod的状态给系统的其他组件 7.上报Node的状态 1.以下操作属于node节点上组件的部署,在master节点上只是进行文件配置,然后发布至各nod…
摘要: 1.Kube-scheduler作为组件运行在master节点,主要任务是把从kube-apiserver中获取的未被调度的pod通过一系列调度算法找到最适合的node,最终通过向kube-apiserver中写入Binding对象(其中指定了pod名字和调度后的node名字)来完成调度 2.kube-scheduler与kube-controller-manager一样,如果高可用,都是采用leader选举模式.启动后将通过竞争选举机制产生一个 leader 节点,其它节点为阻塞状态.…
摘要: 1.Kubernetes控制器管理器是一个守护进程它通过apiserver监视集群的共享状态,并进行更改以尝试将当前状态移向所需状态. 2.kube-controller-manager是有状态的服务,会修改集群的状态信息.如果多个master节点上的相关服务同时生效,则会有同步与一致性问题,所以多master节点中的kube-controller-manager服务只能是主备的关系,kukubernetes采用租赁锁(lease-lock)实现leader的选举,具体到kube-con…
摘要: 1.kube-apiserver为是整个k8s集群中的数据总线和数据中心,提供了对集群的增删改查及watch等HTTP Rest接口 2.kube-apiserver是无状态的,虽然客户端如kubelet可通过启动参数"--api-servers"指定多个api-server,但只有第一个生效,并不能达到高可用的效果,关于kube-apiserver高可用方案,我们在后面介绍,本章,之介绍如何安装. 创建k8s集群各组件运行用户 安全性考虑,我们创建单独的用户运行k8s中各组件…
摘要:随着版本的不断迭代,k8s为了集群安全,集群中趋向采用TLS+RBAC的安全配置方式,所以我们在部署过程中,所有组件都需要证书,并启用RBAC认证. 我们这里采用二进制安装,下载解压后,把对应组件二进制文件copy到指定节点 master节点组件:kube-apiserver.etcd.kube-controller-manager.kube-scheduler.kubectl node节点组件:kubelet.kube-proxy.docker.coredns.calico 部署mast…
1)软件环境 软件 版本 系统 Centos7.5 Kubernetes 1.14.1 Docker 18.09 Calico 3.6 Etcd 3.3.12 2)部署过程简单概要 三台master节点仅作为master角色运行,不参与pod调度,所以并没有部署docker.kubelet.kube-proxy等服务.若是想让master也作为node角色参与pod调度,需要在master节点上部署docker.kubelet.kube-proxy三个服务.事实证明,最好在master节点部署这…
一.部署环境架构以及方式 第一种部署方式 1.针对于master节点 将API Server.etcd.controller-manager.scheduler各组件进行yum install.编译安装或者展开安装的方式手动直接安装在master节点主机上,作为系统级守护进程运行. 2.针对于node节点 将kube-proxy.kubelet.docker.flannel各组件进行yum install或下载已预制好的二进制程序包手动安装在node节点主机上,作为系统级守护进程运行. 此部署方…
KubeSphere 不仅支持部署在 Linux 之上,还支持在已有 Kubernetes 集群之上部署 KubeSphere,自动纳管 Kubernetes 集群的已有资源与容器. 前提条件 Kubernetes 版本: 1.13.0 ≤ K8s version < 1.16: Helm,版本 >= 2.10.0(不支持 helm 2.16.0 #6894),且已安装了 Tiller,参考 如何安装与配置 Helm: 集群的可用 CPU > 1 C,可用内存 > 2 G: 集群已…
一.系统规划  主机名 IP   组件  k8s-master01 10.10.0.18 etcd.kube-apiserver.kube-controller-manager.kube-scheduler  k8s-master02 10.10.0.19 etcd.kube-apiserver.kube-controller-manager.kube-scheduler  k8s-master03 10.10.0.20  etcd.kube-apiserver.kube-controller-…
小伙伴们,好久不见,这几个月实在太忙,所以一直没有更新,今天刚好有空,咱们继续k8s的学习,由于我们后面需要深入学习Pod的调度,所以我们原先使用MiniKube搭建的实验环境就不能满足我们的需求了,我们这一节将使用kubeadm搭建Kubernets集群. 一.虚拟机创建 我们的集群包含三个节点kubevm1.kubevm2.kubevm3,其中kubevm1作为Master 我们首先需要使用Virtualbox创建一个虚拟机,步骤如下: 1.新建虚拟机 我们设置内存2G,硬盘20G,CPU…
参考文档: Github:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch Kubernetes推荐采用Fluentd+Elasticsearch+Kibana对系统与容器日志进行采集,查询并展现. 一.环境 1. 基础环境 组件 版本 Remark kubernetes v1.9.2   fluentd-elasticsearch v2.0.4   elastics…
参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/heapster/tree/master/deploy/kube-config/influxdb 或者(source code):https://github.com/kubernetes/heapster/releases cAdvisor:https://github.com/google/cad…
etcd集群配置 master节点配置 1.安装kubernetes etcd [root@k8s ~]# yum -y install kubernetes-master etcd 2.配置 etcd 选项 [root@k8s ~]# cat /etc/etcd/etcd.conf #[Member] ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://172.19.15.92:2…
参考文档: Github介绍:https://github.com/kubernetes/dns Github yaml文件:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns DNS for Services and Pods:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/ Kubedns原理1:https…
一. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为Nimbus的后台程序,它负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态.Nimbus的作用类似于Hadoop中JobTracker的角色. 每个工作节点(Work Node)上运行一个被称为Supervisor的后台程序.Supervisor负责监听从Nimbus分配给…
摘要:etcd 是k8s集群最重要的组件,用来存储k8s的所有服务信息, etcd 挂了,集群就挂了,我们这里把etcd部署在master三台节点上做高可用,etcd集群采用raft算法选举Leader, 由于Raft算法在做决策时需要多数节点的投票,所以etcd一般部署集群推荐奇数个节点,推荐的数量为3.5或者7个节点构成一个集群. 官方地址 https://github.com/coreos/etcd/releases 1)下载etcd二进制文件 etcd命令为下载的二进制文件,解压后复制到…
摘要: 前面几篇文章,就是整个的master节点各组件的部署,上面我们提到过,k8s组件中,kube-controller-manager.kube-scheduler及etcd这三个服务高可用,都是通过leader选举模式产生,本章节我们着重介绍下kube-apiserver高可用配置 1.以下操作属于node节点上组件的部署,在master节点上只是进行文件配置,然后发布至各node节点. 2.若是需要master也作为node节点加入集群,也需要在master节点部署docker.kube…
k8s从1.8版本开始,集群中各个组件需要使用TLS证书对通信进行加密,每个k8s集群都需要有独立的CA证书体系,这里我们采用比较常用的CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件,CA 是自签名的证书,用来签名后续创建的其它 TLS 证书. 使用证书的组件如下: etcd:使用 ca.pem.etcd-key.pem.etcd.pem:(etcd对外提供服务.节点间通信(etcd peer)使用同一套证书)…
K8S Dashboard是官方的一个基于WEB的用户界面,专门用来管理K8S集群,并可展示集群的状态.K8S集群安装好后默认没有包含Dashboard,我们需要额外创建它. 首先我们执行命令: wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml 我们需要对kubernetes-dashboard.yaml进行一些用…
八.部署kube-apiserver 接下来3章节是部署Kube-Master相关的服务,包含:kube-apiserver,kube-controller-manager,kube-scheduler. 3个组件部署在一个节点上,为1个部署单元. kube-apiserver是无状态的,客户端如kubelet可通过启动参数"--api-servers"指定多个api-server,但只有第一个生效,即指定的多个api-server并没有达到高可用的目的(可能在后续版本解决),所以可通…
背景说明: 随着docker使用的逐步深入,docker的管理变得越来越麻烦,单纯的通过docker命令行的方式进行管理已经不能满足需求,同时也存在效率低下的问题.所以急需一个docker集群管理工具,要求是开源.稳定.持续发展.从上网看,开源的项目有很多,大部分都比较陈旧,个人感觉shipyard比较合适,简单实用,但是shipyard最近在github上通知关闭项目,不再维护,本来还想既然这个是开源项目,那就拿到源码自己改造也行,结果是用go写的,只会python,go搞不定.所以放弃了.…
环境准备 一台部署节点,一台master节点,还有两台节点node1,node2 完好的k8s集群环境 思路一: 在node1和node2节点上通过宿主机与容器之间目录映射和端口映射上线静态网站(或动态),然后将映射的目录做成hostpath,通过nfs共享出去. 思路二: 在node1和node2节点上通过拷贝宿主机存放静态资源的目录到容器的apache根目录内实现静态网站的上线,并且能通过部署nodeport静态端口访问后端节点的静态网站. 这里我演示第二种方法: 部署节点操作: 1)编排h…
参考文档: Github介绍:https://github.com/kubernetes/dashboard Github yaml文件:https://github.com/kubernetes/dashboard/blob/master/src/deploy/recommended/kubernetes-dashboard.yaml 或者(各服务模块独立保存):https://github.com/kubernetes/kubernetes/tree/master/cluster/addon…