K8s好用在什么地方?

2个月前 (02-09) 0 点赞 0 收藏 0 评论 6 已阅读

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/


本文收录在
0评论

登录

忘记密码 ?

切换登录

注册