kubernetes学习之路--基础概念以及搭建

news2024/11/16 17:36:04

写在前面:代码审计太难了,不想学了摆烂了,开始学云安全了。。。。

一.云介绍

云分类:公有云、私有云、混合云

云有三种服务模式:Laas、Paas 和 Saas

Laas:基础设施即服务(Infrastructure-as-a-Service),拥有了IaaS,就可以将引荐外包到别的地方去。IaaS公司会提供场外服务器,存储和网络硬件,也可以选择租用。节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用。目前比较知名的IaaS公司有亚马逊、Bluelock、CSC、GoGrid、IBM等。

Paas:平台即服务(Platform-as-a-Service),某些时候也被叫作中间件。所有的开发都可以在这一层进行,节省时间与资源。PaaS公司可以提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统等,可以节省硬件上的费用。PaaS公司与IaaS公司有许多重叠,除了上面列出的那些之外,还有Google、Microsoft Azure、,Heroku、Engine Yard等。

Saas:软件即服务(Software-as-a-Service),也是我们目前普通用户接触最多的层面,在网络上任意一个远程服务器上的应用都是属于SaaS。比如现在阿里的钉钉、JIBUU以及苹果的iCloud都属于这一类。比较知名的SaaS公司有Salesforce、workday、Slack等。

我所接触的暂时是私有云,所以暂时的学习路线就是先学习一些基础知识,然后学习公有云如阿里云和腾讯云,最后进一步再学习微软的Azure及亚马逊的AWS,谷歌的Google Cloud。

二.Kubernetes基本介绍

Kubernetes(也称 k8s 或 “kube”)是一 个开源的容器编排平台,可以自动完成在部署、管理和扩展容器化应用过程中涉及的许多手动操作。

  • Node:节点节点上的组件包括 kublet、 ​​​​​​容器运行时以及 kube-proxy。

         1. Pod:包装一个容器或多个容器。一个 pod 应该只包含一个应用程序(通常,一个 pod 只运行 1 个容器)。Pod 是 kubernetes 抽象出容器技术运行的方式。

        2.Service:每个 pod 都有 1 个来自节点内部范围的内部IP 地址。但是,它也可以通过服务公开。该服务还有一个 IP 地址,它的目标是保持 pod 之间的通信,因此如果一个 pod 挂掉,新的替代品(具有不同的内部 IP)将可以访问暴露在服务的同一 IP 中。它可以配置为内部或外部。当 2 个 pod 连接到同一个服务时,该服务还充当负载均衡器。

  • Kubelet :主节点代理。在节点和 kubectl 之间建立通信的组件,并且只能运行 pod(通过 API 服务器)。kubelet 不管理不是由 Kubernetes 创建的容器。
  • Kube-proxy :是负责 apiserver 和节点之间通信(服务)的服务。基础是节点的 IPtables。大多数有经验的用户可以安装其他供应商的其他 kube-proxies。
  • Sidecar 容器:Sidecar 容器是应该与 Pod 中的主容器一起运行的容器。这种边车模式扩展并增强了当前容器的功能,而无需更改它们。如今,我们知道我们使用容器技术来包装应用程序在任何地方运行的所有依赖项。一个容器只做一件事,而且做得很好。
  • Api Server:是用户和 Pod 用来与主进程通信的方式。只应允许经过身份验证的请求。
  • Scheduler:调度器,调度是指确保 Pod 与节点匹配,以便 Kubelet 可以运行它们。它有足够的智能来决定哪个节点有更多的可用资源,并将新的 pod 分配给它。请注意,调度程序不会启动新的 pod,它只是与节点内运行的 Kubelet 进程通信,这将启动新的 pod。
  • Kube Controller manager :它检查副本集或部署等资源,以检查是否有正确数量的 pod 或节点正在运行。如果 pod 丢失,它将与调度程序通信以启动一个新的 pod。它控制 API 的复制、令牌和帐户服务。
  • etcd :数据存储,持久化、一致化、分布式。是 Kubernetes 的数据库和键值存储,它保存集群的完整状态(每个更改都记录在这里)。Scheduler 或 Controller 管理器等组件依赖于此日期来了解发生了哪些更改(节点的可用资源、运行的 pod 数量...)
  • Volumes:当一个 pod 创建的数据不应该在 pod 消失时丢失,它应该存储在一个物理卷中。Kubernetes 允许将卷附加到 pod 以持久保存数据。该卷可以在本地机器或远程存储中。如果您在不同的物理节点中运行 pod,您应该使用远程存储,以便所有 pod 都可以访问它。
  • ConfigMap:配置URL来访问服务。Pod 将从这里获取数据以了解如何与其余服务(Pod)进行通信。请注意,这不是保存凭据的推荐位置!
  • Secret :这是存储秘密数据的地方如密码、API 密钥……以 Base64 编码。Pod 将能够访问此数据以使用所需的凭据。
  • Deployments :这是指示 kubernetes 运行的组件的地方。用户通常不会直接使用 Pod,Pod 在ReplicaSets中被抽象化(复制的相同 Pod 的数量),它们通过部署运行。请注意,部署适用于无状态应用程序。部署的最低配置是要运行的名称和镜像。
  • StatefulSet :该组件专门用于需要访问相同存储的数据库等应用程序。
  • Ingress :这是用于通过 URL 公开应用程序的配置。请注意,这也可以使用外部服务来完成,但这是公开应用程序的正确方法。

三.搭建Kubernetes

工具介绍:

  • kubeadm:用来初始化集群的指令。

  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。

  • kubectl:用来与集群通信的命令行工具。

  • kind:是一个使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具

3.1 使用kubeadm等工具搭建

使用的环境是Ubuntu 18.04

#安装工具
apt install kubeadm  kubectl  kubelet -y

#使用kubeadm 安装k8s
kubeadm init

#设置admin用户使用kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

 运行命令查看

#查看运行的pod
kubectl get pods

 只要运行上述命令有输出证明搭建完成!!

Ps:我这里是创建了一个pod

  

3.2 使用kind搭建

安装kind

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind

安装go环境

# 从官⽹https://golang.org/dl/ 下载
wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz
# 解压到指定⽬录/usr/local
tar zxvf go1.13.1.linux-amd64.tar.gz -C /usr/local
# 配置环境变量
vim /etc/profile
在最后添加
export PATH=$PATH:/usr/local/go/bin
保存⽂件,并将新的PATH环境变量加载到当前的shell会话中:
source ~/.profile

新建一个集群

#创建一个名称为k8s的集群
kind create cluster --name k8s
#创建完成后可以通过查看集群
kind get clusters

创建成功如下:

  

3.3 新建一个pod

当我们创建成功一个集群后,就可以使用kubectl进行集群管理了。

使用参考:命令行工具 (kubectl) | Kubernetes

#使用docker拉取nginx镜像
docker pull nginx
#在1112端口创建一个nginx服务
kubectl run nginx-test --image=nginx --port=1112
#查看pods,加上-o wide 参数会输出更多内容
kubectl get pods -o wide

输出如下

  


总结:本文主要介绍了云安全及相关内容的基础知识,然后提供两种搭建集群的简易方法,最后尝试新建一个pod作为初次入门学习。

下篇文章主要学习使用配置文件新建一个pod,以及学习kubernetes中比较重要的组件相关功能有助理解。


参考资料:

Kubernetes Basics - HackTricks Cloud

Kubernetes 文档 | Kubernetes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计酒店客房管理信息系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Git版本控制器

文章目录1.Git介绍1.1.什么是Git?1.2.Git的历史1.3.版本控制分类1.3.1.集中式版本控制1.3.2.分布式版本控制1.4.Github(Git服务器)1.5.Git原理2.使用前的准备2.1.准备Git2.1.1.安装Git2.1.2.配置环境变量2.1.3.IEDA配置Git2.1.4.安装git插件&#xff08…

java面向对象 final static 关键字

目录 关键字:static 类属性、类方法的设计思想 类变量(class Variable) 静态变量的内存解析 类方法(class method) 单例 (Singleton)设计模式 理解main方法的语法 代码块 关键字:final 总结 关键字:static 当我们编写一个类时&…

Vue.js设计与实现,读书笔记第一章

第一章:权衡的艺术 1.1命令式和声明式 jq是命令式,关注过程,jq针对简化dom 而产生的 vue是 声明式,关注实现,不严格地说就像是在命令式(关注过程)基础上再对标签进行了一次封装(关注实现) jQuery命令式…

干货 | Jmeter 如何保证抢购、秒杀活动正常运行?

1. 前言 平常为了保证运营促销、抽奖活动能正常运行,我们一般都需要使用 Jmeter、LoadRunner 对接口进行压力测试 使用它可以模拟一定量的用户同时去参与促销抽奖活动,最后生成测试报告,以此判系统接口的稳定性 本篇文章以抢购商品为例&am…

清华毕业大佬用了一个项目就把SpringMVC+Spring+MyBatis给讲完了

前言 时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了。我在想,也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。 写这一套 Ja…

R语言学习笔记——入门篇:第五章-高级数据管理

R语言 R语言学习笔记——入门篇:第五章-高级数据管理 文章目录R语言一、数值与字符处理函数1.1、数学函数1.2、统计函数1.3、概率函数1.4、字符处理函数1.5、其他实用函数1.6、将函数应用于矩阵与数据框二、控制流2.1、循环(for,while&#…

从零开始带你实现一套自己的CI/CD(三)Jenkins+Harbor

目录一、简介二、安装Harbor2.1 Amd64架构安装Harbor2.2 Arm64架构安装Harbor找不到make命令找不到git命令执行make download和make compile_redis失败执行make compile_redis命令执行make prepare_arm_data命令执行make pre_update命令执行make compile COMPILETAGcompile_gol…

【OpenCV-Python】教程:4-4 SIFT 介绍

OpenCV Python SIFT (尺度不变特征变换) 【目标】 SIFT算法SIFT特征点和描述子 【理论】 前面的章节中,我们提到了角点检测,例如Harris角点,他们是旋转不变的,因为,图像无论如何旋转,其角点特性不会发生…

世界杯8强盘点

2022年卡塔尔世界杯(英语:FIFA World Cup Qatar 2022)是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足球赛。除此之外,卡塔尔世界杯还是首次在北半球冬季举行、首次…

docker(八)compose

compose 一 简介: 通过前面几篇文章,我们了解了docker的基本知识,docker帮我们解决了服务打包安装的问题,但是随着服务的不断增多带来了如下问题: 多次使用Dockerfile Build Image或者DockerHub拉取Image;需要创建多…

Spark 动态资源分配参数与源码原理分析

1.1.1、Dynamic Allocation 1.1.1.1 参数说明 1.2 版本 参数名及默认值含义spark.dynamicAllocation.enabled false是否开启动态资源分配,主要是基于集群负载分配executorspark.dynamicAllocation.executorIdleTimeout60sexecutor空闲时间达到规定值&#xff0c…

程序人生:化解互联网 “寒冬” 危机,我教你摆脱困境

三年反复的yi情,近20年史无前例的互联网裁员潮汹涌而至。 寒冬来袭,每一个职场打工人,都感到了寒意。 互联网企业大裁员的底层逻辑,一方面是受宏观环境影响(yq、互联网红利结束、政策变化等),…

ChatGPT震撼上市,AI也开始跟你卷了,来一起看看怎么用ChatGPT!!!

强大AI产品,ChatGPT震撼上市,程序员真的要失业了吗? 最近聊天机器人异常火爆,火爆到什么程度,卖个关子,下文解释。 OpenAI推出了ChatGPT,它能够回答各种各样的问题,包括生成代码&a…

Node.js学习下(70th)

一、Buffer 缓冲区 背景 1、浏览器没有储存图片文件等媒体文件的需求,JS 存的都是一些基本数据类型。 2、服务器需要存储图片/视频/音频等媒体文件,因此有了 Buffer 缓冲器。 1. Buffer 是什么 Buffer 是一个和数组类似的对象,不同是 Buf…

python代码学习1

\n 换行符号 \r 回车 \b 后退一个格 \t 制表符(4个字符为一组,当不字符被占有时,重新生成一个制表符。如果被占据,不满4个字符时,生成剩余部分空格。) #原字符 不希望字符串中转义字符起作用&#xff0…

FME Server 无代码环境中自动化您数据和应用集成工作流

专为现代企业打造 简化数据和应用程序集成,让您的数据为您所用。在FME Desktop中创作工作流,并使用 FME Server 将其自动化,以按计划或响应事件运行数据集成。 构建无代码 Web 应用程序,提供自助式数据提交和验证,并向…

Java学习之动态绑定机制

目录 举例说明 父类 子类 main类 运行结果 ​编辑 动态绑定 举例说明 父类 子类 main类 分析 运行结果 Java重要特性:动态绑定机制(非常重要) 举例说明 父类 class A {//父类public int i 10;public int sum() {return getI(…

2022年11月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2022年11月国产数据库大事件和重要产品发布消息。 文章目录11月国产数据库大事记(时间线)产品/版本发布兼容认证排行榜新增数据库11月国产数据库大事记(时间线) 11月1日,国际知名研究机构 IDC …

什么是内存对齐

内存对齐 什么是内存对齐为什么要内存对齐内存对齐的规则结构体中内存对齐 sizeof无嵌套有嵌套 iOS中对象内存对齐 iOS中获取内存大小方式 class_getInstanceSize()malloc_size() iOS中内存对齐 实际占用内存对齐方式系统分配内存对齐方式问题 内存优化 总结 内存对齐 什么…