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 来访问服务,⽽不需要了解后端容器的运⾏。
在这里插入图片描述


在这里插入图片描述

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
Kubernetes 负载均衡 Cloud Native
猿创征文|云原生|kubernetes二进制1.18单master扩展为多master
猿创征文|云原生|kubernetes二进制1.18单master扩展为多master
53 0
|
3月前
|
Kubernetes Cloud Native 调度
云原生技术专题 | 云原生容器编排问题盘点,总结分享年度使用Kubernetes的坑和陷阱
随着云原生的兴起,越来越多的应用选择基于Kubernetes进行部署,可以说Kubernetes 是最流行的容器编排和部署平台。它的强大功能特性,可以保障在生产中可靠地运行容器化应用程序,相关的DevOps等工具也应运而生,下面就是小编简单化了一个Kubernetes的逻辑架构图。
327 9
云原生技术专题 | 云原生容器编排问题盘点,总结分享年度使用Kubernetes的坑和陷阱
|
4月前
|
Kubernetes Cloud Native Linux
云原生|kubernetes|kubernetes集群部署神器kubekey的初步使用(centos7下的kubekey使用)
云原生|kubernetes|kubernetes集群部署神器kubekey的初步使用(centos7下的kubekey使用)
77 1
|
4月前
|
Kubernetes Cloud Native 应用服务中间件
云原生|kubernetes 你真的学废了吗---实战k8s 一(jsonpath实战)
云原生|kubernetes 你真的学废了吗---实战k8s 一(jsonpath实战)
65 0
|
11天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
16 4
|
1月前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
219 0
|
1月前
|
Kubernetes Cloud Native Devops
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
51 1
|
1月前
|
弹性计算 运维 Kubernetes
云原生K8S场景自动化响应ECS系统事件
客户云原生K8S场景下,通过社区开源NPD+Draino+Autoscaler零开发,对接响应ECS主动运维事件,通过自动响应事件减少非预期宕机。
|
3月前
|
Kubernetes Cloud Native 网络协议
【云原生】Kubernetes介绍
【云原生】Kubernetes介绍
38 1
|
3月前
|
人工智能 Cloud Native PyTorch
阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践
阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践
148654 4

推荐镜像

更多