发布信息

集群基础 具体教程 基于Linux自己初步搭建Kubernetes k8s (集群基础具体指什么)

     2024-10-22 15:11:40     422

本文目录导航:

基于Linux自己初步搭建Kubernetes(k8s)集群基础,具体教程

k8s官方网站:,可自行检查相关文档说明

k8s-master:Ubuntu--192.168.152.100

k8s-node01:Ubuntu--192.168.152.101

k8s-node02:Ubuntu--192.168.152.102

所有已装置docker,未装置可依据官方文档装置:1,制止swap分区

K8s的要求,确保制止掉swap分区,不由止,初始化会报错。

在每个宿主机上口头:

2,确保时区和期间正确

时区设置

3,封锁防火墙和selinux

ubuntu 检查防火墙命令,ufw status可检查形态,ubuntu20.04自动所有封锁,无需设置。

4,主机名和hosts设置(可选)

非必定,然而为了直观繁难治理,倡导设置。

在宿主机区分设置主机名:k8s-master,k8s-node01,k8s-node02

hosts设置

1,更改docker自动驱动为systemd

为防止初始化产生一系列的失误,请审核docker和kubectl驱动能否分歧,否则kubectl没法启动形成报错。

版本不一样,docker有些为cgroupfs,而kubectl自动驱动为systemd,所以要求更改docker驱动。

可检查自己docker驱动命令:

更改docker驱动,编辑 /etc/docker/ (没有就新建一个),参与如下启动项参数即可:

重启docker

要求在每台机器上装置以下的软件包:

2,降级 apt 包索引并装置经常使用 Kubernetes apt 仓库所要求的包

装置软件包以准许apt经过HTTPS经常使用存储库,已装置软件的可以疏忽

3,下载地下签名秘钥、并参与k8s库

国外 :下载 Google Cloud 地下签名秘钥:

国际:可以用阿里源即可:

请留意,在命令中,经常使用的是Ubuntu 16.04 Xenial 版本, 是可用的最新 Kubernetes 存储库。

所以而非20.04 的focal。

4,降级 apt 包索引,装置 kubelet、kubeadm 和 kubectl,并锁定其版本

锁定版本,防止产生不兼容状况,例如,1.7.0 版本的 kubelet 可以齐全兼容 1.8.0 版本的 API 主机,反之则无法以。

只有要在master上操作即可。

1,初始化失误处置(没有报错的可以跳过这条)

失误揭示1:

要素:kubectl没法启动,journalctl -xe检查启动失误信息。

处置打算:k8s倡导systemd驱动,所以更改docker驱动即可,编辑 /etc/docker/ (没有就新建一个),参与如下启动项参数即可:

重启docker和kubectel

失误揭示2:

要素:初始化消费的文件,从新初始化,要求删除即可

失误揭示3:

处置方法:重置性能

2,初始化成功

无报错,最后产生以下,示意初始化成功,依据揭示还要求操作。

依据用户是root或许个别用户操作,由于大多环境不会是root用户,我也是个别用户,所以选用个别用户操作命令:

假设是root用户,口头以下命令:

初始化成功,用最后的揭示命令 kubeadm join.... 在node机器上参与集群即可。

3,主节点pod网络设置

主节点支持网络插件:这里装置Calico网络插件:Calico官方提供三种装置形式,1)低于50个节点,2)高于50个节点,3)etcd>细说kubernetes - 为什么是pod?

k8s作为如今最火的容器编排调度平台,好用我也就不用多说了。

当咱们初识k8s的时刻一个新的概念就到了咱们眼前,那就是pod。

咱们在经常使用了之后也就慢慢的接受了pod这个物品,然而你有没有想过,为什么是pod?k8s为什么会有这样的设计?当天咱们就来细细说说这个pod

首先咱们来回想看看k8s的架构图是什么样子的

从架构图中咱们可以看到,整个k8s的设计架构有以下几个要点:

当然其余组件都十分关键,这个咱们以后再说,咱们当天就来看看主角“pod”

一开局用的时刻我就猎奇为什么k8s要弄出一个pod,由于咱们一开局经常使用的是docker,操作的是docker容器,构建的也是docker镜像,为什么不间接调度docker容器就好了,这样粒度不是愈加粗疏,调度也会愈加繁难吗? 咱们在经常使用k8s之前也经常使用过docker-compose,从另一个角度说,这也是一种容器的治理,看起来也挺好的。 上方咱们就来说说pod

从上方的图你大略可以感遭到pod在k8s中其实是一个什么样的角色。

咱们假设经常使用虚构机,那么上方就会有一系列的服务这些服务或许会有一些依赖,而这样的依赖就如同在主机中运转的一个个进程组,往往其中也有着相关的依赖,而pod中的容器也是一样的情理,其中也会有相似这样的依赖,为了更好的形容和治理这样的依赖,于是就有了pod。

其实这样的理念往往可以类比出很多这样的设计。

必定会有这样的相关吗?我的觉得是,在现代技术服务的开发的环节中,这样的相关是无法防止的。

我上方来举几个例子。

咱们知道 java 的 web 运行往往要求部署在tomcat这样的容器之中,在 springboot 还没有产生以前,要求自己启动一个 tomcat 容器,而后将要求部署的运行打包部署到容器中去。

在以前你或许会想着,将 javaweb 打包一个war,而后编写一个 dockerfile 将 war 包cp到 tomcat 中的 webapp 目录中。

然而这样带来的就是每次降级颁布的时刻,镜像会很大,由于每次构建都会有一个基础的tomcat镜像。

而在k8s经常使用的时刻,会有的设计的是,将tomcat作为一个不变的镜像(它也不应该扭转)而把 war 包作为另外一个容器,而这样个容器同时挂载同一个目录,将 webapp 挂载的目录与 war包挂载的目录相反来到达目标,而后将他们放到同一个 pod 中。

相似的操作还有:外面说的就是前端静态页面和 nginx 的相关。

上方援用官方设计理念中的一句话:“ 比如你运转一个操作系统发行版的软件仓库,一个Nginx容器用来颁布软件,另一个容器专门用来从源仓库做同步,这两个容器的镜像不太或许是一个团队开发的,然而他们一块儿上班能力提供一个微服务;这种状况下,不同的团队各自开发构建自己的容器镜像,在部署的时刻组分解一个微服务对外提供服务。 ”

在经常使用 docker 部署名目标时刻会遇到一个疑问就是日志耐久化的疑问,由于 docker 容器假设被删除的话,其中的文件也会被删除,那么咱们的日志文件同时也会被删除,也就是说咱们必定要将日志耐久化。

最经常出现的形式是,将日志存储的目录挂载到宿主机上,这样容器被删除的时刻日志不会被删除。 而在k8s中经常出现的日志处置架构是怎样样的呢?

经常使用的是 sidecar,这个是什么呢?其实就是一个辅佐性质的容器,同时与主容器放在同一个 pod 中,读取主容器挂载进去的日志目录。

其实后续还可以做更多的操作,比如日志发送es等等。

总之咱们可以看到,在一个pod中的容器相关是十分亲密的,他们可以领有同一个目录,甚至可以领有同一个网络,可以领有相互的服务,这样的相关我听过的名词叫做“超亲密相关”。

就相似一对夫妻之间的相关了。

由于在如今的多说运行中,曾经简直做不到一团体顶天立地了,总是会有各种各样的依赖,依赖一些组件,依赖一些工具,依赖一些网络服务等等,一个进程组有很多的进程相互协助来最终成功性能一样。

这样的相关太过经常出现,于是k8s就将它设计为了pod。

假设你曾经对docker的成功比拟相熟,其实pod的成功并不复杂。(假设对docker成功不相熟可以翻看之前的博客) 其实pod是一个逻辑上的概念,其实pod做的事件很繁难:

其实k8s做的就是初始化一个infra的容器(这是一个很小的容器),应用这个容器去当先占用要求经常使用的 Namespace ,而后在将用户指定的容器加载出去,同时经常使用的就是相反的 Namespace 了。(假设有 InitContainer 会优先按顺序初始化它,图上就不做说明了)

这样共享网络应该是没有疑问了,那么要共享Volume也很繁难。

pod 只有要将 Volume 目录挂载到宿主机,让外部的容器挂载这个目录就可以了。

再来说说pod还有哪些性能,这些性能也是k8s为什么设计pod的要素之一

经过Probe:LivenessProbe或许ReadinessProbe,可以探测运行能否处于肥壮形态,假设不肥壮做出相关的反响。

这就好比k8s可以活期的帮你监控、维持一整个运行的肥壮。

其真实咱们看来,很多时刻服务挂了,要求重启,要求做高可用,那么nginx呢?tomcat呢?也是一样的。

所以pod的肥壮能保障整个服务的所有肥壮经常使用。

咱们可以经过给Pod参与/ingress-bandwidth和/egress-bandwidth这两个annotation来限度Pod的网络带宽。

为什么我提到了这特性能呢?由于在实践的业务开发环节中经常会经常使用一些网络插件,这些网络插件在流量的控制上十分有用,有的时刻咱们会依据网络流量来做一系列的操作,用户的突然增长造成的流量剧增能否要扩容等等...而这样的监控和限度关于pod来说无疑会愈加繁难,而不要求管pod外部的容器的流量。

重启的战略,这个也算是一特性能吧

官方:一个Pod(就像一群鲸鱼,或许一个豌豆夹)。

我觉得 Pod 更证实了一种设计形式“组合”,在有的时刻会,组合的正当,就会繁难很多物品,比如设计了一堆组件,组合在一同;ps画图的时刻方块更圆组合在一同,就可以一同多复制几个组合。

当然咱们在看法到为什么要这样设计 Pod 的同时要求看法到,咱们应该将什么样的容器组合搁置在同一个 Pod 之中才比拟适宜。

遵照必定的“容器设计形式”启动编排,调度的时刻才会愈加随心所欲。

CKA 及CKAD认证阅历分享

大家好,前段期间经过了CNCF CKA、CKAD认证,这里我将分享我的认证阅历,宿愿能对你们有所协助。

**考试目标:**我从事与容器和Kubernetes相关的上班,对这个畛域充溢激情。

我选用参与这个认证一方面是为了坚固我的常识,另一方面是为了取得专业机构的认可。

此外,公司正在放开成为Kubernetes服务提供商,要求至少有三人经过CKA认证。

**考试前预备:**1. **报名相关事项:** - 报名后,他们会审核你的笔记本电脑环境。

- 选用英文版的CKA考试,由于考试是在线启动的(听说台湾有考点,宿愿大陆也能尽快设立)。

- 选用北京时区,并依照揭示选用适宜的期间。

- 考试期间可以修正,但要求在考试前24小时并且在上班日启动。

- CKA考试的及格分数是75分,有两次考试时机,假设第一次性没过,一年内可以再次考试。

- 报名费用为300美元(听说彩色星期五有活动)。

2. **备考资料:** - 官方资料 - 国际有些守业公司提供培训,费用较高,适宜初学者或经济条件准许的人。

- 介绍的学习视频:感谢哔哩哔哩和华为云提供的视频,链接:(华为云的视频内容不错,但录制品质有待提高)。

**考试留意事项:**1. **考试流程:** - 考试前15分钟进入考试界面,确认身份,审核环境等。

- 考题是中文的,但有些翻译不佳,倡导检查英文版。

- 确保有良好的网络环境,可以经常使用公司网络。

- 假设考试终止,尝试新建标签页从新进入。

- 经常使用Chrome阅读器。

- 考试期间弛缓,倡导先做繁难标题,难题记在提供的笔记表格里最后处置。

- 的内容可以间接粘贴。

- 节俭期间的技巧:经常使用kubectl run命令,标签保留内容,命令补全等。

2. **考试关键常识点:** - 创立资源:Pod、Deployment、Daemonset等,留意多容器Pod和Daemonset的tolerations。

- 日志输入:经常使用kubectl logs xxxx | grep xxxx挑选日志。

- 节点调度:经常使用nodeSelector。

- Init容器:在现有文件中参与Init容器。

- Deployment创立和镜像版本降级,经常使用kubectl run、kubectl set image、kubectl rollout undo。

- 泄露服务:经常使用kubectl expose。

- Secret的经常使用。

- 排错:控制节点或上班节点疑问。

- 参与节点:TLS Bootstrap。

- etcd备份。
集群基础具体指什么
**考试后留意事项:**1. **结果通知:** - 考试后,不会立刻收到结果。

官方示意36小时内会经过电子邮件通知,我是在34小时后收到邮件的,包含效果和认证证书。

2. **证书有效期:** - 最新的信息是,CKAD的证书有效期改为三年。

- CKAD考试期间为120分钟,19道题;CKA为180分钟,24道题。

- CKAD的证书有效期为2年,而CKA为3年。

- CKAD关键触及资源的创立,而CKA包含创立资源和排错。

相关内容 查看全部