lidonghe 发表于 2018-9-15 11:53:54

一、(K8s)Kubernetes的基本概念与搭建

什么是kubernetes?  首先,他是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。
  在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。            Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力![](http://i2.51cto.com/images/blog/201806/30/a45d63dac8ce914f37afc52e58f2800a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。提高了大规模容器集群管理的便捷性。
  Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。
  作用:
  1. 自动化容器的部署和复制
  2. 随时扩展或收缩容器规模
  3. 将容器组织成组,并且提供容器间的负载均衡
  4. 很容易地升级应用程序容器的新版本
  4. 提供容器弹性,如果容器失效就替换它
  Kubernetes解决的问题:
  1. 调度 - 容器应该在哪个机器上运行
  2. 生命周期和健康状况 - 容器在无错的条件下运行
  3. 服务发现 - 容器在哪,怎样与它通信
  4. 监控 - 容器是否运行正常
  5. 认证 - 谁能访问容器
  6. 容器聚合 - 如何将多个容器合并成一个工程
  Kubernetes组件组成:
  1. kubectl
  客户端命令行工具,将接受的命令格式化后发送给kube-apiserver,作为整个系统的操作入口。
  2. kube-apiserver
  作为整个系统的控制入口,以REST API服务提供接口。
  3. kube-controller-manager
  用来执行整个系统中的后台任务,包括节点状态状况、Pod个数、Pods和Service的关联等。
  4. kube-scheduler
  负责节点资源管理,接受来自kube-apiserver创建Pods任务,并分配到某个节点。
  5. etcd
  负责节点间的服务发现和配置共享。
  6. kube-proxy
  运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。
  7. kubelet
  运行在每个计算节点上,作为agent,接受分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给kube-apiserver。
  8. DNS
  一个可选的DNS服务,用于为每个Service对象创建DNS记录,这样所有的Pod就可以通过DNS访问服务了。
  搭建k8s环境
  Master节点必需组件
  etcd非关系型数据库
  kube-apiserver核心组件,所有组件均与其通信,提供Http Restful接口
  kube-controller-manager集群内部管理中心,负责各类资源管理,如RC,Pod,命名空间
  kube-scheduler调度组件,负责node的调度
  Node节点必需组件
  kubelet Node节点中核心组件,负责执行Master下发的任务
  kube-proxy 代理,负责kubelet与apiserver网络。相当于负载均衡,将请求转到后端pod中
  步骤:
  Master节点:
  1.安装etcd数据库,通过yum安装即可,yum -y install etcd
  2.解压原码包,并把server/bin/目录加入PATH中
  /usr/bin/tar -zxf kubernetes-server-linux-amd64.tar.gz
  echo export PATH=$PATH:/kubernetes/server/bin >> /etc/profile
  3.

页: [1]
查看完整版本: 一、(K8s)Kubernetes的基本概念与搭建