K8S 的新认知与初领会

简介: 我们今天开始正式进⼊ Kubernetes 的课程学习,Kubernetes 相信各位已经听过很多次了,那么什么是 Kubernetes呢?

0️⃣写在前面

大家好,我们今天开始正式进⼊ Kubernetes 的课程学习,Kubernetes 相信各位已经听过很多次了,那么什么是 Kubernetes呢?

1️⃣k8s介绍

Kubernetes (k8s)是 Google 团队发起的⼀个开源项⽬,它的⽬标是管理跨多个主机的容器,⽤于⾃动部署、扩展和管理容器化的应⽤程序,主要实现语⾔为 Go 语⾔。

Kubernetes 的组件和架构还是相对较复杂的,如果我们⼀上来就给⼤家讲解这些概念,可能很多同学都消化不了,所以我们先让大家来使⽤Kubernetes,去感受下,去体验下⾥⾯的⼀些概念和⽤法,等你对这些基本概念熟悉 以后,再来给⼤家讲解Kubernetes的组件和架构应该就更加容易了。

怎样体验呢?当然最好的办法就是我们⾃⼰搭建⼀套集群了,但是如果完完全全都我们⼿动去搭建的话,第⼀是太耗时,第⼆是太复杂,可能我们现在还没有这个实⼒,没关系,我们可以使⽤⼀些⼯具来辅助我们。

  1. katacoda 的课程:katacoda,可以在⽹站上帮我们启动⼀个minikube的环境(学习)在这里插入图片描述2.需要我们⾃⼰来搭建的 - Rancher ,我们之前给⼤家介绍过,如果你⽹速不好的话安装 Rancher 可能需要花费⼀点时间,不过这是值得的。(测试)
$ docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.0.0 # 查看⽇志
$ docker logs -f rancher

rancher

rancher

  1. Docker for MAC/Windows(推荐)/minikube/(本地)
  2. kubeadm(测试)
  3. ⼆进制纯⼿动搭建(生产)
Docker for MAC/Windows 和 minikube 安装之前需要安装kubectl⼯具

2️⃣集群

集群是⼀组节点,这些节点可以是物理服务器或者虚拟机,在他上⾯安装了Kubernetes环境。

在这里插入图片描述Master负责管理集群, master协调集群中的所有活动,例如调度应⽤程序、维护应⽤程序的所需状态、扩展应⽤程序和滚动更新。

节点是 Kubernetes 集群中的⼯作机器,可以是物理机或虚拟机。每个⼯作节点都有⼀个 kubelet,它是管理节点并与 Kubernetes Master 节点进⾏通信的代理。节点上还应具有处理容器操作的容器运⾏时,例如Docker或rkt。⼀个 Kubernetes ⼯作集群⾄少有三个节点。 Master 管理集群,⽽节点⽤于托管正在运⾏的应⽤程序。

当您在 Kubernetes 上部署应⽤程序时,您可以告诉 master 启动应⽤程序容器。Master 调度容器在集 群的节点上运⾏。 节点使⽤ Master 公开的 Kubernetes API 与 Master 通信。⽤户也可以直接使⽤ Kubernetes 的 API 与集群交互。


3️⃣Pod

Pod 是⼀组紧密关联的容器集合,它们共享 PID、IPC、Network 和 UTS namespace,是Kubernetes 调度的基本单位。

Pod 的设计理念是⽀持多个容器在⼀个 Pod 中共享⽹络和⽂件系统,可以通过进程 间通信和⽂件共享这种简单⾼效的⽅式组合完成服务。在这里插入图片描述在 Kubernetes 中,所有对象都使⽤ manifest(yaml或json)来定义,⽐如⼀个简单的 nginx 服务可以定义为 nginx.yaml,它包含⼀个镜像为 nginx 的容器:

apiVersion: v1 
kind: Pod 
metadata: 
name: nginx 
labels: 
app: nginx 
spec: 
containers: 
- name: nginx 
image: nginx 
ports: 
- containerPort: 80 

4️⃣Lable

Label 是识别 Kubernetes 对象的标签,以 key/value 的⽅式附加到对象上(key最⻓不能超过63字节,value 可以为空,也可以是不超过253字节的字符串)。

Label 不提供唯⼀性,并且实际上经常是 很多对象(如Pods)都使⽤相同的 label 来标志具体的应⽤。 Label 定义好后其他对象可以使⽤ Label Selector 来选择⼀组相同 label 的对象(⽐如Service ⽤ label 来选择⼀组 Pod)。

Label Selector⽀持以下⼏种⽅式:

  • 等式,如app=nginx和env!=production
  • 集合,如env in (production, qa)
  • 多个label(它们之间是AND关系),如app=nginx,env=test

5️⃣Namespace

Namespace 是对⼀组资源和对象的抽象集合,⽐如可以⽤来将系统内部的对象划分为不同的项⽬组或⽤户组。

常⻅的 pods, services,deployments 等都是属于某⼀个 namespace 的(默认是default),⽽ Node, PersistentVolumes 等则不属于任何 namespace。


6️⃣Deployment

是否⼿动创建 Pod,如果想要创建同⼀个容器的多份拷⻉,需要⼀个个分别创建出来么,能否将Pods 划到逻辑组⾥?

Deployment 确保任意时间都有指定数量的 Pod“副本”在运⾏。如果为某个 Pod 创建了Deployment 并且指定3个副本,它会创建3个 Pod,并且持续监控它们。如果某个 Pod 不响应,那么 Deployment 会替换它,保持总数为3.

如果之前不响应的 Pod 恢复了,现在就有4个 Pod 了,那么 Deployment 会将其中⼀个终⽌保持总数 为3。如果在运⾏中将副本总数改为5,Deployment 会⽴刻启动2个新 Pod,保证总数为5。 Deployment 还⽀持回滚和滚动升级。
当创建 Deployment 时,需要指定两个东⻄:

  • Pod模板:⽤来创建 Pod 副本的模板
  • Label标签:Deployment 需要监控的 Pod 的标签。

现在已经创建了 Pod 的⼀些副本,那么在这些副本上如何均衡负载呢?我们需要的是 Service。

7️⃣Service

Service 是应⽤服务的抽象,通过 labels 为应⽤提供负载均衡和服务发现。匹配 labels 的Pod IP 和端⼝列表组成 endpoints,由 kube-proxy 负责将服务 IP 负载均衡到这些endpoints 上。

每个 Service 都会⾃动分配⼀个 cluster IP(仅在集群内部可访问的虚拟地址)和 DNS 名,其他容器可以通过该地址或 DNS 来访问服务,⽽不需要了解后端容器的运⾏。
在这里插入图片描述


在这里插入图片描述

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
173 2
|
7天前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
2月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
178 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
3月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
3月前
|
Kubernetes Cloud Native 开发者
云原生入门:Kubernetes的简易指南
【10月更文挑战第41天】本文将带你进入云原生的世界,特别是Kubernetes——一个强大的容器编排平台。我们将一起探索它的基本概念和操作,让你能够轻松管理和部署应用。无论你是新手还是有经验的开发者,这篇文章都能让你对Kubernetes有更深入的理解。
|
3月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
3月前
|
Kubernetes 负载均衡 Cloud Native
探索Kubernetes:云原生应用的基石
探索Kubernetes:云原生应用的基石
|
3月前
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
85 1
|
3月前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
3月前
|
存储 运维 Kubernetes
云原生之旅:Kubernetes的弹性与可扩展性探索
【10月更文挑战第32天】在云计算的浪潮中,云原生技术以其独特的魅力成为开发者的新宠。本文将深入探讨Kubernetes如何通过其弹性和可扩展性,助力应用在复杂环境中稳健运行。我们将从基础架构出发,逐步揭示Kubernetes集群管理、服务发现、存储机制及自动扩缩容等核心功能,旨在为读者呈现一个全景式的云原生平台视图。
46 1

热门文章

最新文章