k8s初探-安装kubernetes

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: k8s初探-安装kubernetes

什么是容器编排


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


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


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


image.png


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

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

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

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



使用容器编排启动容器组

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

image.png



我们将上述自行管理的容器,交由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
containerd unix:///var/run/containerd/containerd.sock
CRI-O unix:///var/run/crio/crio.sock
Docker Engine unix:///var/run/cri-dockerd.sock

我们使用docker来做测试

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


image.png

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

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

ip 主机名
192.168.11.180 master
192.168.11.181 node1
192.168.11.182 node2



安装docker以及cri-docker


安装docker

# yum install docker-ce -y

启动docker 并且查看版本


image.png



安装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

查看版本


image.png

检查完毕后,直接使用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集群所需的


image.png


安装完毕后,需要根据提示操作下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

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

image.png

环境校验

image.png



总结


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




相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4天前
|
Kubernetes Ubuntu jenkins
超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
|
29天前
|
容器 Perl Kubernetes
深入 Kubernetes 网络:实战K8s网络故障排查与诊断策略
本文介绍了Kubernetes网络的基础知识和故障排查经验,重点讨论了私有化环境中Kubernetes网络的挑战。首先,文章阐述了Kubernetes网络模型的三大核心要素:Pod网络、Service网络和CNI,并强调了其在容器通信和服务发现中的作用。接着,通过三个具体的故障案例,展示了网络冲突、主节点DNS配置更改导致的服务中断以及容器网络抖动问题的解决过程,强调了网络规划、配置管理和人员培训的重要性。最后,提到了KubeSkoop exporter工具在监控和定位网络抖动问题中的应用。通过这些案例,读者可以深入了解Kubernetes网络的复杂性,并学习到实用的故障排查方法。
146306 18
|
12天前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
|
14天前
|
运维 Kubernetes Cloud Native
云原生时代的技术革命:Kubernetes与容器编排
【6月更文挑战第17天】在数字化转型的浪潮中,云原生技术正成为推动企业IT架构现代化的核心力量。本文将深入探讨Kubernetes作为云原生生态中的佼佼者,如何引领容器编排的技术革命,并分析其在现代应用部署、管理和扩展中的关键作用。通过实例和案例分析,我们将揭示Kubernetes如何助力企业实现更高效、灵活和可靠的云原生应用管理。
|
26天前
|
运维 Kubernetes Java
Java一分钟之Kubernetes(K8s):容器编排深入浅出
【6月更文挑战第6天】Kubernetes是容器编排的主流工具,简化分布式系统运维。本文介绍了K8s核心概念:节点、Pod、服务、部署和副本集。讨论了资源不足、依赖服务未就绪等常见问题及其解决策略,并提供创建Deployment的代码示例。学习K8s能提升部署效率和运维灵活性。
129 5
|
5天前
|
Prometheus 监控 Kubernetes
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
12 0
|
Kubernetes 容器
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
132 0
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
|
Kubernetes 容器
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
117 0
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
|
Kubernetes 应用服务中间件 API
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)
134 0
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)
|
1月前
|
Kubernetes 微服务 容器
Aspire项目发布到远程k8s集群
Aspire项目发布到远程k8s集群
386 2
Aspire项目发布到远程k8s集群