Kubernetes(K8S)快速入门

概述

在本门课程中,我们将会学习K8S一些非常重要和核心概念,已经操作这些核心概念对应组件的相关命令和方式。比如Deploy部署,Pod容器,调度器,Service服务,Node集群节点,Helm包管理器等等。
在学习本门课之前,同学应该具备一定的Linux、Docker、K8S的基础知识。

我目前已经发布的关于云原生的课程如下:
在这里插入图片描述

如果你没有Linux的基础知识,推荐你学习我的《零基础使用VMWare快速搭建Linux开发环境》,该课程的目录结构如下:
在这里插入图片描述

如果你还没有K8S的基础环境,推荐你学习我的《Ubuntu22和Minikube搭建K8S环境》,该课程的目录结构如下:
在这里插入图片描述

如果你还没有Docker和K8S的基础知识,推荐你学习我的《使用K8S部署Go语言开发的Web应用》,该课程的目录结构如下:
在这里插入图片描述

如果你都需要学习,那么我的推荐学习顺序是:

  • 1、《零基础使用VMWare快速搭建Linux开发环境》
  • 2、《Ubuntu22和Minikube搭建K8S环境》
  • 3、《使用K8S部署Go语言开发的Web应用》

要学习本门课程,至少需要拥有自己的K8S环境,否则,课程中相关的命令和操作,只能作为了解,而没有办法进行实操,学习的效果会稍微偏低。

本课程作为K8S的零基础体系课程之一,用来了解K8S的核心组件和核心概念,学习K8S的基础知识有非常重要的学习价值。
下面,就让我带着同学们一起去探索美妙的云原生世界吧!

部署清单

配置文件

部署清单指的是用来记录要部署的应用程序的一个YAML文件的配置信息,比如我们要部署的myhello的应用程序的部署清单如下:

apiVersion: apps/v1
kind: Deployment
metadata:name: demolabels:app: demo
spec:replicas: 1selector:matchLabels:app: demotemplate:metadata:labels:app: demospec:containers:- name: demoimage: zhangdapeng520/myhelloports:- containerPort: 18888

根据配置文件部署

执行命令:

kubectl apply -f deploy.yaml

查看部署的容器:

kubectl get pods --selector app=demo

根据配置文件删除:

kubectl delete -f deploy.yaml

Deploy部署

在《使用K8S部署Go语言开发的Web应用》课程中,我们的容器镜像已经能够在K8S集群中运行并访问了,但是它究竟是怎么工作的呢?
kubectl run 命令会创建Deploy部署,也就是我们接下来要介绍的重要的Kubernetes资源。

监督与调度

Deploy部署会记录一些关于部署镜像的基本信息,包括:

  • 镜像的名称
  • 要运行的副本数量
  • 启动容器需要的其他信息

重新启动容器

Deploy部署有一个非常重要的功能,那就是重新启动容器。根据配置的副本数量,如果K8S集群中的容器多了,则停止一些,如果少了则增加一些,这个功能非常的灵活和强大。

查询部署

查询Deploy部署:

kubectl get deployments

查看详细信息:

kubectl describe deployments/demo

协调循环

Kubernetes控制器会不断根据集群的实际状态检查每个资源的所需状态,并自动进行调整。比如第一次创建demo部署时,没有运行任何demo的Pod,此时K8S会自动启动所需的Pod。如果这个Pod停止,只要Deploy部署仍然存在,K8S就会再次启动它。

第一步:检查Pod是否在运行

kubectl get pods --selector app=demo

第二步:停止Pod

kubectl delete pods --selector app=demo

第三步:再次查看Pod。此时就会发现有两个Pod,原来的被关闭了,新的那个因为有Deploy,所以被自动创建了。这就是协调循环在工作。

kubectl get pods --selector app=demo

第四步:最后,通过以下命令关闭并清理资源

kubectl delete all --selector app=demo

Service服务

K8S中的Service服务,类似于一种Web代理或者负载均衡器,负责将请求转发大奥一组后端的Pod上。但是需要注意的是,Service不止能够用于Web端口,还能够将流量从任意端口转发到其他端口。
我们之前部署的Go开发的Web程序,正常情况下是无法被外部访问到的,我们通过配置Service的端口,能够实现被外部访问。通过以下的实验,我们来深入的了解以下Service服务。

第一步:准备deploy.yaml配置文件

apiVersion: apps/v1
kind: Deployment
metadata:name: demolabels:app: demo
spec:replicas: 1selector:matchLabels:app: demotemplate:metadata:labels:app: demospec:containers:- name: demoimage: zhangdapeng520/myhelloports:- containerPort: 18888

第二步:准备service.yaml配置文件

apiVersion: v1
kind: Service
metadata:name: demolabels:app: demo
spec:ports:- port: 18888protocol: TCPtargetPort: 18888selector:app: demotype: ClusterIP

第三步:部署Deploy资源

kubectl apply -f deploy.yaml

第四步:部署Service资源

kubectl apply -f service.yaml

第五步:端口转发

kubectl port-forward service/demo 9999:18888

第六步:浏览器访问 http://localhost:9999
第七步:删除资源

kubectl delete -f service.yaml
kubectl delete -f deploy.yaml

查看K8S集群中的节点

kubectl get nodes

副本数量

通过配置K8S中容器的副本数量,我们能够很轻松的实现容器的扩容,下面我们来做一个实验学习一下修改副本数量的用法。

第一步:将deploy.yaml中的副本数量改为3

spec:replicas: 3

第二步:部署

kubectl apply -f deploy.yaml

第三步:查看pod

kubectl get pods --selector=app

第四步:将deploy.yaml中的副本数量改为1

spec:replicas: 1

第五步:再次部署

kubectl apply -f deploy.yaml

第六步:再次查看pod

kubectl get pods --selector=app

第七步:清理资源

kubectl delete -f deploy.yaml

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员收入与支出 对比分析网红的收入来源

无法收回,就不要花出去。钱只花在增值的事上。 保证一年基本生存的钱不能花。 大额支出要全家协商一致才能花。(别把全家坑了) 作为程序员,您的收入和支出可以从以下几个方面来考虑: 收入 基本薪资:这是…

C# 使用Pipelines处理Socket数据包

写在前面 在上一篇中对Pipelines进行简单的了解,同时也留下了未解的问题,如何将Pipelines类库运用到Socket通讯过程中来解决粘包和分包。链接地址如下: 初识System.IO.Pipelines https://rjcql.blog.csdn.net/article/details/135211047 这…

【Web API系列】使用getDisplayMedia来实现录屏功能

文章目录 前言一、认识getD该处使用的url网络请求的数据。二、使用步骤1.使用方法一实现录屏2.使用方法二实现录屏3. 运行效果 延伸 前言 Web API经过长期的发展,尤其是最近,发展相当迅猛,现在已经支持很多功能了,一些原生就支持…

IRIS、Cache系统类汉化

文章目录 系统类汉化简介标签说明汉化系统包说明效果展示类分类%Library包下的类重点类非重点类弃用类数据类型类工具类 使用说明 系统类汉化 简介 帮助小伙伴更加容易理解后台系统程序方法使用,降低代码的难度。符合本土化中文环境的开发和维护,有助于…

月入7K, 95后护士转行网优,疫情之后,我选择辞掉“铁饭碗”

成为一个三甲医院的护士是什么体验? 如果你一毕业后就进入一家三甲医院,你可能会享受到稳定的就业环境、近在咫尺的机会与资源。 看似稳定与不错的薪资待遇,成为疫情之后普通打工人挤破脑袋也要进入的存在。似乎也能理解各地医院招聘时动辄80…

每日一题-----逆序字符串

大家好我是Beilef,在一个美好的下午我意外接触到编程并且产生了兴趣,哈哈我要努力成为一个跨界者,让我们一起加油吧O(∩_∩)O 文章目录 目录 文章目录 前言 大家好请上车 一、逆序字符串 题⽬描述: 输⼊⼀个字符串,写…

LabVIEW进行激光斑点图像处理与分析

LabVIEW进行激光斑点图像处理与分析 近年来,激光技术的应用日益繁荣。激光光斑的质量评估和分析技术决定了应用效果,对机器视觉、武器装备、光学测量和医疗设备产生深远影响。就具体用途和技术而言,激光光斑的采集和处理至关重要。即插即用的…

第十五节TypeScript 接口

1、简介 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要有由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。 2、接口的定义 interface interface_…

ElasticSearch 架构设计

介绍 ElasticSearchMySQLIndexTableDocumentRowFieldColumnMappingSchemaQuery DSLSQLaggregationsgroup by,avg,sumcardinality去重 distinctreindex数据迁移 ElasticSearch 中的一个索引由一个或多个分片组成 每个分片包含多个 segment(分…

redis的搭建及应用(三)-Redis主从配置

Redis主从配置 为提升Redis的高可用性,需要搭建多个Redis集群以保证高可用性。常见搭建方式有:主从,哨兵集群等,本节我们搭建一主二从的多Redis架构。 redis主从安装1主2从的方式配置,以端口号为redis的主从文件夹。 主…

CSS 文字弹跳效果

鼠标移过去 会加快速度 <template><div class"bounce"><p class"text" :style"{animationDuration: animationDuration}">欢迎使用UniApp Vue3&#xff01;</p></div> </template><script> export d…

Java架构师系统架构设计实践

目录 1 导语2 架构设计实践本章概述3 架构设计要素概述和规划4 架构设计模式5 架构设计输入6 架构设计输出7 架构设计要素总结 想学习架构师构建流程请跳转&#xff1a;Java架构师系统架构设计 1 导语 Java架构师在进行系统架构设计时&#xff0c;需要综合考虑多个方面&#…

【三维生成】稀疏重建、Image-to-3D方法(汇总)

系列文章目录 总结一下近5年的三维生成算法&#xff0c;持续更新 文章目录 系列文章目录一、LRM&#xff1a;单图像的大模型重建&#xff08;2023&#xff09;摘要1.前言2.Method3.实验 二、SSDNeRF&#xff1a;单阶段Diffusion NeRF的三维生成和重建&#xff08;ICCV 2023&am…

【网络安全 | 网络协议】结合Wireshark讲解TCP三次握手

前言 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的传输层协议。在建立 TCP 连接时&#xff0c;需要进行三次握手&#xff0c;防止因为网络延迟、拥塞等原因导致的数据丢失或错误传输&#xff0c;确保双方都能够正常通信。 TCP三次握手在Wireshark数据包中…

线程学习(3)-volatile关键字,wait/notify的使用

​ &#x1f495;"命由我作&#xff0c;福自己求"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;线程学习(2)​​​​ 一.volatile关键字 volatile关键字是多线程编程中一个非常重要的概念&#xff0c;它主要有两个功能&#xff1a;保证内存可见性…

漏洞复现--用友NC Cloud XXE

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

【译文】IEEE白皮书 6G 太赫兹技术的基本原理 2023版

第一章 简介 太赫兹波是介于微波和光波之间的光谱区域&#xff0c;频率从 0.1THz ~ 10THz 之间&#xff0c;波长在 3mm ~ 30μm 之间。提供大块连续的频带范围以满足对 Tbit/s 内极高数据传输速率的需求&#xff0c;使该区域成为下一代无线通信&#xff08;6G&#xff09;的重…

Django(三)

1.快速上手 确保app已注册 【settings.py】 编写URL和视图函数对应关系 【urls.py】 编写视图函数 【views.py】 启动django项目 命令行启动python manage.py runserverPycharm启动 1.1 再写一个页面 2. templates模板 2.1 静态文件 2.1.1 static目录 2.1.2 引用静态…

《软件需求分析报告》

第1章 序言 第2章 引言 2.1 项目概述 2.2 编写目的 2.3 文档约定 2.4 预期读者及阅读建议 第3章 技术要求 3.1 软件开发要求 第4章 项目建设内容 第5章 系统安全需求 5.1 物理设计安全 5.2 系统安全设计 5.3 网络安全设计 5.4 应用安全设计 5.5 对用户安全管理 …

html旋转相册

一、实验题目 做一个旋转的3d相册&#xff0c;当鼠标停留在相册时&#xff0c;相册向四面散开 二、实验代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" con…