k8s初探-安装kubernetes

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

什么是容器编排

不使用容器编排启动容器组

要了解kubernetes之前,我们要先看下,什么是容器编排,假设我们需要多个容器来完成我们的业务的时候,我们如何去启动和管理呢?

假设我们有一个博客系统,分为前端和后端业务,我们分别运行在容器中,若我们不使用容器编排,我们可将系统这样布置

我们直接使用容器部署,会产生如下问题

  • 需要手动管理容器A、容器B
  • 若容器B挂了,容器A并不知晓

关于第一条,手动管理容器,这个可是一个大活儿,如何判断,它两是一个组合? 靠命名规则判断么?

关于第二条,若我们想后端(容器B)若挂了,则一起将前端关闭掉(后端没了,前端毫无意义,除了输出502),若我们自行部署,这个点,很难达到。

使用容器编排启动容器组

好的,以上不足,都可以通过容器编排来解决该问题,可将如上架构修改为

我们将上述自行管理的容器,交由kubernetes进行管理,利用pod可以管理其下的所有容器,即容器A容器B通过探针,可以定时判断后端是否访问不通,若访问不通,则关闭前端。即可解决上述产生的问题。

容器编排工具

容器编排工具,不仅仅有大名鼎鼎的kubernetes,还有其他的,例如 docker swarmdocker composeMesosphere Marathon、以及rancher等。

容器编排支持哪些容器

这个已经在行业内有了标准,一般而言,只要容器遵守了CRI规范,则即可被支持。例如,docker出现的时候,容器还没有规范,所以,docker就没有遵守CRI规范,而容器编排工具想要使用的话,则需要安装一个额外的服务才行,例如,kubernetes要想使用docker作为运行时,则需要安装插件cri-dockerd(unix:///var/run/cri-dockerd.sock)才行。

kubernetes简介

什么是kubernetes

kubernetes是由谷歌开源出来的一套容器编排工具,其原型为谷歌内部的一个系统: Borgk8s其主要作用为基于容器的分布式解决方案,不仅具有集群管理能力,还有故障发现、自动修复、在线扩容等等高大上的技术实现。

我们可以粗略的认为这是一种容器编排技术即可。

为什么要用kubernetes

我认为其大概有以下一个原因

  • kubernetes已经被各大云厂商支持,已经有了生态,包括国内的像 阿里云、腾讯云 等, 海外的 谷歌云、亚马逊 等,相比于传统上线,在k8s中只用将服务描述文件推出即可,无需考虑负载、负载均衡等。
  • kubernets特有的功能,如 弹性伸缩、服务监控、负载均衡等,都是由该工具完成的,开发者,更主要注重业务逻辑即可。

安装kubernetes

首先,k8s作为一种容器编排技术,所以,我们需要提前安装容器,例如 dockerpodman等。甚至于,你可以直接安装 CRI-O,不过需要注意下,k8s是通过如下unix socket连接他们的。

运行时unix socket
containerdunix:///var/run/containerd/containerd.sock
CRI-Ounix:///var/run/crio/crio.sock
Docker Engineunix:///var/run/cri-dockerd.sock

我们使用docker来做测试

其流程大概可以归纳为如下步骤

我们准备3台机器做安装k8s,1台master,2台node

准备工作,需要重命名主机名,且在hosts写入映射

ip主机名
192.168.11.180master
192.168.11.181node1
192.168.11.182node2

安装docker以及cri-docker

安装docker

# yum install docker-ce -y

启动docker 并且查看版本

安装cri-docker

这个直接从github拉包下载即可

目前最新版本为 0.2.1 (2022年5月26日)

# wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.1/cri-dockerd-0.2.1.amd64.tgz
# tar xf cri-dockerd-0.2.1.amd64.tgz
# mv cri-dockerd/cri-dockerd /usr/local/bin/cri-dockerd

查看版本

检查完毕后,直接使用cri-dockerd启动即可

利用kubeadm安装kubernetes

基础环境安装

由于网络环境因素,按正常逻辑,我们应该直接在google获取源,我们可以在阿里镜像同样获取

需要提前关闭防火墙/selinux等

新增kubernetes.repo文件

image.png

安装 kubeadm kuectl kubelet

# yum install kubeadm kubectl kubelet -y

关闭swap

# swapoff -a

开启bridge-nf-call-iptables

# modprobe br_netfilter
# echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

启动kubelet

# systemctl start kubelet

安装master

使用kubeadm安装k8s

在此过程中,若拉取不到 k8s.gcr.io/pause:3.6 镜像,可以从阿里云拉取,然后给该镜像打个tag就成

# kubeadm init   \
--apiserver-advertise-address=192.168.11.180   \
--image-repository registry.aliyuncs.com/google_containers   \
--kubernetes-version v1.24.0   \
--service-cidr=10.1.0.0/16   \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket /var/run/cri-dockerd.sock

安装完毕后,会提示如下信息,这个后面加入k8s集群所需的

安装完毕后,需要根据提示操作下kube配置文件 image.png

安装node

将基础环境安装完毕后,直接使用 kubeadm join加入节点即可

命令

# kubeadm join 192.168.11.180:6443 --token 1itlhu.qnmr6qe13977463x \
        --discovery-token-ca-cert-hash sha256:ce5dcd46acddc63b638c25a7fd6fd54b2bf786568e61bb6ba1b9d15119f9f193 \
        --cri-socket /var/run/cri-dockerd.sock

执行成功后会显示如下输出

环境校验

总结

kubernetes是众多容器编排工具的一种,运行时支持3种,containerdCRI-O以及 cri-docker,注意: 在kubernetes v1.24.0版本中,Dockershim已经被弃用了,请选择cri-docker作为kubernetesdocker的中间件,我们之所以用k8s,一方面在于它强大的服务功能,例如 扩缩容、故障治愈 ,其次在于其生态,目前国内网主流云厂商,基本上都有kubernetes服务,我们仅需将 产品镜像 和yaml描述文件 丢上去即可运行,很大程度上解决了环境初始化 和 部署的问题。

posted @ 2022-05-26 14:14  pdudos  阅读(0)  评论(0编辑  收藏  举报  来源