k8s介绍
k8s搭建一个应用(mysql+tomcat)
kubetnetes介绍
官网 https://kubernetes.io/
Kubernetes也就是k8s
Kubernetes是一个开源系统,它主要用来自动部署、扩容缩容和管理容器应用。
它将诸多应用的容器分为若干个逻辑单元以便于管理和发现。Kubernetes拥有着在kubernetes中,service是核心,我们并不需要太多关注kubernetes里面是怎么工作的,我们只需要关心它给我们提供什么service。
就像docker容器可以提供一个mysqld的服务、web服务等。
它需要拥有一个唯一的名字、有ip:port对外提供服务。
提供service的是容器,为了保证service的高可用,提供service的容器不能只有一个,需要一组。这一组容器我们把它叫做pod。
为了实现service和pod之间的关联,又有了标签(label)的概念,我们把功能相同的pod设定为同一个标签,比如,可以把所有提供mysql服务的pod贴上标签name=mysql,这样mysql service要作用于所有包含name=mysql标签的pod上。
pod运行在Node上,Node可以是一台物理机,也可以是虚拟机,通常一个Node上会运行几百个pod。每个pod里运行着一个特殊的容器,叫做Pause,其他容器叫做业务容器,业务容器共享Pause容器的网络栈和Volume挂载卷,因此同一个pod内的业务容器之间的通信和数据交换更为高效。
在集群管理方面,kubernetes将集群中的机器划分为一个master节点和一群工作节点Node,其中master上运行着kubeapiserver、kube-controller-manager、kube-scheduler,它们实现了资源管理、pod调度、弹性伸缩、安全控制、系统监
控、纠错等功能。Node是工作节点,运行应用程序,提供服务。Node上的最小单元是pod,Node上运行着kubernetesd的kubelet、kube-proxy服务进程,它们负责pod的创建、启动、监控、重启、销毁,以及实现负载均衡。
通过一组图了解kubernetes各个元素的关系:
Google高负载生产环境的15年经验,并结合了社区的优秀思想和实践。
扩容和升级需要一个关键的东西,Replication controller(RC),RC需要包含3个关键信息:
1)目标pod的定义
2)目标pod需要运行的副本数量(replicas)
3)要监控的目标pod的标签(Label)
工作过程:RC里定义好3个指标,kubernetes会根据RC定义的Label帅选出对应的pod,并实时监控其状态和数量,当实例数量少于定义的副本数(replicas),则会根据RC定义的pod模版来创建新的pod,然后将此pod调度到合适的Node上启动并运行。
可理解为pod的高可用,是rc来定义的(调度的)。可调度到其他正常的node上
该过程完全自动化,无需人工干涉。
从一个例子开始:
webapp(tomcat) + mysql
安装kubernetes #此处只是单机安装kubernetes,并不是安装集群
准备一台centos7.5以上的版本
#cat /etc/redhat-release 来看一下版本。如果不是 yum update升级一下
1) 关闭firewalld 和 selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2)安装etc