K8S 的新认知与初领会

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 我们今天开始正式进⼊ 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搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
76 5
|
1天前
|
存储 运维 Kubernetes
云原生之旅:Kubernetes的弹性与可扩展性探索
【10月更文挑战第32天】在云计算的浪潮中,云原生技术以其独特的魅力成为开发者的新宠。本文将深入探讨Kubernetes如何通过其弹性和可扩展性,助力应用在复杂环境中稳健运行。我们将从基础架构出发,逐步揭示Kubernetes集群管理、服务发现、存储机制及自动扩缩容等核心功能,旨在为读者呈现一个全景式的云原生平台视图。
12 1
|
6天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
29 4
|
7天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
29 3
|
11天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
21 3
|
10天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
17天前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
1月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
103 17
|
25天前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
113 0
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
29天前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!