K8s好用在什么地方?
k8s是什么?
说到Kubernetes,相信当今国内任何一家300人以上的IT企业都会使用到,它正慢慢成为操作系统般的存在。
Kubernetes这个名字源于希腊语,意为“舵手”或“飞行员”。k8s这个缩写是因为k和s之间有八个字母。Google 在2014年开源了k8s项目,k8s建立在 Google 大规模运行生产工作负载十几年经验的基础上,并结合了开源社区中最优秀的想法和实践经验。
可以把我们要搭建整个服务(比如抖音、微信)比喻成要开一家公司,对客户提供服务,机器、网络、容器的镜像是我们对公司的投入,需要提前准备好,而k8s相当于我们雇佣的职业经理人团队(团队成员对应k8s的内置组件,后续文章会一一介绍),它可以按照我们的想法搭建好整个公司,并对外提供服务,而更幸运的是,我们不需要为它单独支付薪水或授予股权。
详细一点说,k8s本身是一个开源软件,它允许我们通过它在机器上很容易地部署、管理容器化的应用,它依赖于Linux容器的特性来运行异构应用(建议阅读一下《容器与Docker的本质》一文),无须知道这些应用的内部详情,也不需要手动将这些应用部署到每台机器。
应用运行在容器里,它们不会影响运行在同一台服务器上的其他应用,当我们是为完全不同的组织机构运行应用时,这就很关键了。这对于云供应商来说更是至关重要的,因为它们在追求高硬件可用的同时也必须保障所承载应用完全隔离。k8s 使我们在数以千计的电脑节点上运行软件就像在单个大节点上一样。它简化了应用的开发、部署,以及对开发和运维团队的管理。
k8s能做什么?
容器是打包和运行应用程序的好方法,在生产环境中,我们需要管理运行着应用程序的容器,并确保服务不会下线。如果一个容器发生故障,我们需要启动另一个容器替代它, 但如果整个过程由某个系统自动帮我们处理,岂不是就有更多摸鱼的时间了。
这就是k8s要做的事情,k8s为我们提供了一个可弹性运行分布式系统的框架,可以满足我们的自动扩缩容、故障转移等需求,具体包括:
自动部署和回滚
我们可以在董事会上给公司定一个业绩指标,然后让k8s去完成。具体的地说,就是我们可以描述一个期望的状态,然后让k8s去操作,使整个系统达到我们想要的状态并保持这个状态,进一步地说就是k8s可以按照我们的要求去自动创建新容器、删除现有容器等。
服务发现和负载均衡
当有大量的客户来我们公司寻求服务时,k8s可以分配好每个接待员工的负载量,避免出现“旱的旱死,涝的涝死”的状况。具体来说,就是k8s可以使用DNS名称或自己的IP地址来暴露容器,如果进入容器的流量很大,k8s可以实现负载均衡并分配网络流量,从而使服务稳定。
合理利用硬件资源
我们可以提前告诉k8s“公司里每个部门的人员数目上限以及可支出的成本”,k8s会按照我们的要求招聘、定薪。具体地说,我们为k8s提供许多节点组成的集群,并在这个集群上运行容器化的任务,我们可以告诉k8s每个容器需要多少CPU和内存(RAM),k8s可以将容器按实际情况调度到符合条件的节点上,以最佳方式利用我们的资源。
自我修复
如果某个部门的工作状态出现了重大问题,k8也会及时帮我们处理。具体地说就是k8s将自动重启运行失败的容器、替换无法正常运行的容器、删除状态检查失败的容器(我们可以自己定义检查的具体行为)。
存储编排
k8s可以自动挂载我们所选择的存储系统(通过PV、PVC等,后续文章会详细介绍),例如本地存储、公共云提供商(如阿里云、AWS)等。
密钥与配置管理
k8s可以帮我们存储和管理敏感信息,例如密码、OAuth令牌和ssh密钥等。我们可以在不重建容器镜像的情况下更新密钥、更新应用程序配置,而且无需在配置中暴露密钥。
k8s怎么在5分钟内安装完成?
为了快速安装k8s,我们需要借助一个工具:sealos,通过它我们基本可以实现一键安装。
(1)前提条件:1台或者多台连接公网的Linux系统服务器或者虚拟机(内核版本最好在3.11及以上)
(2)安装sealos(安装包位于github,分amd64和arm64两个版本,若因网络问题无法下载可关注微信公众号“小小平头哥”并回复“sealos”)
wget https://github.com/labring/sealos/releases/download/v4.1.7/sealos_4.1.7_linux_amd64.tar.gz \ && tar zxvf sealos_4.1.7_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
(3) 安装k8s
单机:
sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 --single
多节点:
多节点情况下要保证它们的主机名(hostname)不同,可以使用如下命令修改机器的hostname,可将安装sealos的节点命名为master01,其余节点依次命名为worker01、worker02...(单master场景)。
hostnamectl set-hostname [主机名称]
k8s的集群是有master node、worker node,也就是主节点、工作节点之分的,我们后续会详细说到,可以暂时认为主节点是k8s集群中的管理员,而工作节点是实际干活的。而之前的单节点安装k8s,相当于一个节点扮演了master与worker两个角色。
接下来安装k8s(只需要在已安装sealos的节点上执行):
sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \ --masters 192.168.0.2 \ --nodes 192.168.0.3 -p [your-ssh-passwd]
参数说明:
在干净的服务器上直接执行上述命令,不做任何多余操作,即可启动一个高可用的k8s集群。
多节点安装过程:
出现下图,说明k8s集群已安装完成。
k8s安装完成后,我们可以使用如下命令查看k8s集群的节点信息以及状态。
后续文章我们会详细介绍k8s的架构设计、资源类型以及其他更多细节,敬请期待。
参考内容:
1.https://kubernetes.io/
2.《Kubernetes in Action》 Marko Luksa
3.https://www.sealyun.com/zh-Hans/docs/getting-started/kuberentes-life-cycle
4.https://wealthmasteryacademy.com/
5.https://medium.com/k8s%E7%AD%86%E8%A8%98/kubernetes-k8s-%E7%82%BA%E4%BB%80%E9%BA%BC%E4%BD%BF%E7%94%A8kubernetes-k8s-why-kubernetes-k8s-87e1cddb12d
6.https://www.microfusion.cloud/2022/06/02/kubernetes-gke-1/
7.https://platform9.com/blog/kubernetes-on-premises-why-and-how/
还没有任何评论,你来说两句吧