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的主要内容,如果未能解决你的问题,请参考以下文章