K8s

Posted cc77

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s相关的知识,希望对你有一定的参考价值。

K8s: 

开源的容器集中管理系统,使用go语言开发,用于管理云平台中多个主机上的容器化应用

Kubernetes特性:

K8s的目标是让部署容器化的应用简单并且高效提供了资源调度、部署管理、服务发现、扩容缩容、监控,维护等一整套功能。成为跨主机集群的自动部署、扩展以及运行应用程序容器的平台。 

1.自我修复   2.弹性伸缩   3.自动部署和回滚   4.服务发现和负载均衡   5.机密和配置管理   6.存储编排   7.批量处理

Kubernetes集群构架与组件:

K8s属于主从分布式架构,主要由master和worker node组成,包括客户端命令行工具kubectl和其它附加项。

Master作为控制节点,对集群进行统一的调度和管理,增删改查。

Worker Node:作为真正的工作节点,运行业务应用的容器,node由master管理,node负责监控并汇报容器的状态。

kubectl:客户端工机具,用于通过命令行与API Server进行交互,对Kubernetes集群进行操作,实现在集群中进行各种资源的增删改查等操作。

Kubernetes组件介绍:

Master组件:集群控制管理节点,负责管理集群,所有的命令都经由master处理,拥有Etcd存储服务,运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。

master节点组件:

技术图片

 

etcd:用于保存k8s数据容器云平台中的所有节点,主要被用来共享配置和服务发现

Node组件:是k8s集群的工作负载节点,k8s中有很多node节点机器,来提供运算。当node节点宕机时,master会将工作负节点转移到其他节点上。

node运行管理业务容器包含以下组件:

技术图片

 K8s核心观念

Container:容器即可以运行服务和程序,容器是独立运行的一个或一组应用。容器可以被启动、开始、停止、删除等,每个容器都是相互隔离的。可以把容器看做是一个简易版的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

Pod:在k8s系统中,pod是最小部署单元,一个pod包含一个或多个紧密相连的业务容器,k8s为每个pod都分配了唯一的IP地址,称之为PodIP,一个Pod里的多个容器共享Pod里的多个容器共享PodIP地址,它负责外部跟容器之间进行通信。

Pod运行于Node节点上,Pod是k8s进行创建、调度、和管理的最小单位,一个Pod可以包含一个容器或者多个相关容器。

每个Pod都会包含一个 “根容器(称之为Pause的容器)”,还会包含一个或者多个紧密相连的业务容器。

Controllers控制器:k8s通常不会直接创建Pod,而是通过Controller来管理Pod,所以controller负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。

Services:是k8s最外围的单元,通过虚拟一个访问IP及服务端口,可以访问我们定义好的Pod资源,是通过 iptables 的 nat转发实现,转发的目标端口为Kube_proxy生成的随机的端口。

技术图片

 

K8s三种IP:

              Node IP:Node节点的 IP 地址

              Pod IP:Pod 的 IP地址

              Cluster IP:Service 的 IP地址

Node IP 是k8s集群中节点的物理网卡IP地址,所有属于这个网络的服务器之间都能通过这个网络直接通信。k8s集群之外的节点访问k8s集群之内的某个节点或者TCP/IP服务的时候,必须通过Node IP 进行通信。

Pod IP 是每个Pod的IP地址,它是Docker Engine根据 docker0 网桥的IP地址进行分配的,通常是一个虚拟的二层网络。  

Cluster IP只能结合Service Port组成一个具体的通信端口,单独的Cluster IP 不具备通信的基础,

并且它们属于K8s集群这样一个封闭的空间。 

总结各组件之间的关:

1、k8s的架构由一个 master 和多个 node 组成,master 通过api提供服务,接受kubectl的请求来调度管理整个集群。

2、Controller Manager 是K8s所有资源对象的自动化控制中心,处理集群中常规后台任务,一个资源对应一个控制器,而Controller Manager就是负责管理这些控制器的。

3、Service 定义真实对外网提供的服务,一个 service 会对应后端运行的多个container。(没有service访问不到容器)

4、k8s是个管理平台,node上的proxy拥有提供真实服务公网IP。客户端访问k8s中提供的服务,是直接访问到kube-proxy上的。

5、在k8s中pod是一个基本单元,一个pod可以是提供相同功能的多个container,这些容器会被部署在同一个node上。node是运行 Kubelet 中容器的宿主机。node接受 master的指令创建 pod 或者容器。

使用kubeadm搭建kubernetes容器集群管理系统

k8s部署方式(三种): 

1、minikube(可以在本地快速运行的一个单点的k8s,用于尝试k8s或日常开发使用的用户使用)

2、kubeadm(提供 kubeadm init 和 kubeadm join,用于快速部署k8s集群。)

3、二进制包

Kubeadm部署K8s集群

kubeadm是官方社区推出的一个用于快速部署k8s集群的工具。它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建K8s集群的最佳实践。通过kubeadm init 完成集群master节点的初始化,用kubeadm join把node节点加入集群。

这个工具能通过两条指令完成一个K8s集群的部署:

1、创建一个Master节点

kubeadm init

2、将一个Node节点加入到当前集群中

kubeadm join<Master 节点的IP和端口>

安装要求:

  一台或多台机器,操作系统 CentOS7.x-86_x64

  硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多

  集群中所有机器之间网络互通

  可以访问外网,需要拉取镜像

  禁止swap分区

实验说明:

 节点角色

 主机名

 IP 地址

 gateway

 dns

 CPU

 内存

 Master

 控制节点

 master

 192.168.1.11

 192.168.1.254

 114.114.114.114

 4 核

 4GB

 node节点

 node1

 192.168.1.12

 192.168.1.254

 114.114.114.114

 4 核

 4GB

 node节点

 node2

 192.168.1.13

 192.168.1.254

 114.114.114.114

 4 核

 4GB

实验环境: 

1、因为使用vmware workstation部署k8s实验环境,所有虚拟机都桥接vmnet8,虚拟机通过nat方式连接internet。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

2、在vmware workstation中点击”编辑”中的”虚拟网络编辑器”,选中”vmnet8”进行编辑。

技术图片

 

 将子网ip设置为192.168.1.0,点击”应用”。

 然后点击上图中的”NAT设置”按钮,将网关设置为192.168.1.254

技术图片

 

 

准备完成!!!

以上是关于K8s的主要内容,如果未能解决你的问题,请参考以下文章

k8s启动单点mysql

k8s入门教程详解

k8s入门教程详解

k8s入门教程详解

[k8s系列六]K8S网络补充之DNS

利用K8S技术栈打造个人私有云(连载之:K8S环境理解和练手)