轻松玩转Kubernetes笔记分享

简介: 轻松玩转Kubernetes笔记分享

1.2 Kubernetes概述

什么是容器?

·容器为App提供独立的、受控的运行环境,是一种轻量级的操作系统虚拟化。

简单的容器:SandBox(沙盒、沙箱)

容器基本概念

·容器关键概念

―容器

一镜像


容器关键技术

Cgroup

NameSpace


容器时代的“双城记”

Docker Kubernetes(K8s)

Kubernetes -大海航行的舵手

K8s集群主要包括两个部分:Master节点(管理节点)和Node节点(计算节点)

Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。

Master节点

Master节点提供的集群控制,对集群做出全局性决策,例如调度等。通常在master节点上不运行用户容器。

Master节点包括API Server、Scheduler、Controller manager、etcd。

API Server :整个系统的对外接口

Scheduler:集群内部的资源进行调度

Controller Manager:负责管理控制器

etcd : Kubernetes的后端存储


Node节点

节点组件运行在每一个Node节点上,维护运行的pod并提供kubernetes运行时环境。

Node节点包括Pod、Docker、kubelet、kube-proxy、Fluentd、kube-dns (可选

Pod是K8s最小单位


Pod : Kubernetes最基本的操作单元

Docker :创建容器;

Kubelet:负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等;

Kube-proxy∶负责为Pod对象提供代理

Fluentd:主要负责日志收集、存储与查询。


Master节点和Node节点交互


2.%2 Kubernetes云上环境搭建

CCE-基于开源K8S、 Docker技术的企业级容器服务

云容器引擎(Cloud Container Engine,CCE)是基于业界主流的Docker和Kubernetes开源技术构建的容器服务,提供众多契合企业大规模容器集群场景的功能,在系统可靠性、高性能、开源社区兼容性等多个方面具有独特的优势,满足企业在构建容器云方面的各种需求。


CCE优势:高性能、简单易用、安全可靠、开放兼容


怎么管理K8s集群

图形化WEB-UI 华为云CCE控制台、官方Dashboard


命令行Kubectl i

WebTerminal 管理员并发用户少

Node+EIP 管理员并发用户多



华为云Kubernetes环境快速搭建架构

CE快该束物建Kubernetes

Kubernetes的访问

VPC:提供网络环境

EIP:访问公网

ECS:弹性云主机

CCE:创建K8s集群

Kubernetes环境管理

1. 进行Kubectl及配置文件下载

2. 下载kubectlkubectl配置文件  kubeconfig.jsonkubectl

3. Kubectl客户端服务器购买

4. 集群中管理节点安全组设置

5. 安装和使用kubectl


使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群:

$kubectl create -f single-config-file.yamlkubectl是和Kubernetes API交互的命令行程序。




1.3 Kubernetes核心概念

Kubernetes最小管理单元-POD

Pod是Kubernetes管理的最小基础单元。


一个Pod中封装了︰

一个或多个紧耦合的应用容器

存储资源

独立的IP

容器运行的选项

相同Pod中的任何容器都将共享相同的名称空间和本地网络。容器可以很容易地与其他容器在相同的容器中进行通信

实践1:POD的创建和管理

1.POD定义文件的上传

通过winscp将下载的附件中的yml文件上传至客户端服务器目录并查看;


2.创建POD

kubectl apply -f POD-1Containeryml


3.POD的管理

指定POD运行到指定的NODE上

kubectl apply -f POD-NodeSelector.yml


4.POD的删除

kubectl get pod

kubectl delete pod nginx



有状态应用和无状态应用

无有状态应用

无状态服务,易于部署且易于扩展。如果流量上升,则只需添加更多的负载平衡;上游容器镜像和基础架构中正在运行的容器其实几乎没有区别;

可以随时被替代,而且容器实例切换过程中几乎不需要耗费“切换成本”。


有状态应用

有状态的服务,从部署开始,这些容器就开始与上游镜像不同了,时间越长它们的差异越大;

每个运行的应用程序都至少有—个小状态(差异),但对于“无状态”应用程序来说,状态(差异)很小,而且可以进行快速替换。


无状态应用控制器– Deployment

ReplicationController 无状态应用的高可靠 ReplicaSets 无状态应用的高可靠应用的滚动发布 Deployment


实践2:Deployment的创建和管理

1.创建deployment

kubectl apply -f deployment.yml


2.查看POD

kubectl get pod

3.手动删除POD

kubbectl delete pod nginx-deployment-67d4b848b4-sghfq


4.扩展Deployment数量

kubectl scale deployment.v1.apps/nginx-deployment --replicas=4

kubectl get pod


5.查看deployment状态和数量


有状态应用控制器- StatefulSet

如果部署的应用满足右侧一个或多个部署需求则建议使用StatefulSet。


在具有以下特点时使用StatefulSets·稳定性,唯一的网络标识符

·稳定性,持久化存储

·有序的部署和扩展

·有序的删除和终止

·有序的自动滚动更新


实践3:StatefulSet的创建和管理

1.在Winscp将StatefulSet定义文件statefulset.yml上传至ecs-k8s。


2.通过以下命令创建StatefulSet。

kubetcl apply -f statefulset.yml


3.通过以下命令查看POD数量和名称

kubectl get pod


4.手动删除名称为web-0的POD。

kubectl delete pod web-0


5.再次查看POD。

kubectl get pod


系统应用控制器- DaemonSet

DaemonSet能够让所有或者特定的Node节点运行一个pod。当节点加入到kubernetes集群中,pod会被( DaemonSet ) 调度到该节点上运行。当节点从kubernetes集群中被移除,( DaemonSet )调度的pod会被移除。


运行日志采集器在每个Node上,例如fluentd ,logstash

运行监控的采集端在每个Node,例如prometheusnode exporter , collectd等

每个Node上运行一个分布式存储的守护进程,例如glusterd , ceph


适合场景:在一个区域的Node上都运行一个守护进程



实践4:DaemonSet的创建和管理

1. winscp中上传daemonset.yml文件至ecs-k8s

2. 查看kube-system命令空间中的DaemonSetkubectl get ds -n kube-system

3. 创建daemonset

kubectl apply -f daemonset.yml


4.再次查看kube-system中的DaemonSet

kubectl get ds -n kube-system


5.在CCE中购买节点


6.查看各个DaemonSet实例数

kubectl get ds -n kube-system


临时任务控制器–Job

我们经常需要进行批量数据处理和分析,以及按照时间进行调度执行。可以在Kubenrtes中

使用容器技术完成,使用Job和CronJob来执行。


Job负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。

CronJob是基于调度的Job执行将会自动产生多个job,调度格式参考Linux的cron系统。


实践5:Jobs创建和管理

1. winscpJob.yml上传

2. 运行Job

kubectl apply -f Job. Yml

3.查看job运行状态

kubectl get job


4.查看此Job的输出

kubectl get pod

kubectl logs pi-c5pgr


应用访问- Service


Kubernetes应用间互访- Cluster IP


Kubernetes集群外互访–NodePort

公网访问- LoadBalancer


实践6 : Service的创建和管理

1.上传的deployment文件创建Deployment

kubectl apply -f deployment. Yml


2.创建NodePort类型的Service并查看

kubectl expose deployment nginx-deployment-type=NodePort

kubectl get service


3. 过curl命令验证网站

kubectl get node


4.url 192.168.0.227:32465

5.华为云控制台查看其中一个kubernetes Node绑定的公网地址

6.在浏览器中,输入ECS绑定的公网地址+Service的Nodeport


命名空间- NameSpace

作用:Kubernetes可以使用Namespaces(命名空间)创建多个虚拟集群;Namespace为名称提供了一个范围。资源的Names在Namespace中具有唯一性


场景:当团队或项目中具有许多用户时,可以考虑使用Namespace来区分,a如果是少量用户集群,可以不需要考虑使用

Namespace,如果需要它们提供特殊性质时,可以开始使用Namespace。

大多数的Kubernetes中的集群默认会有一个叫default的namespace。实际上,应该是3个:default:你的service和app默认被创建于此。kube-system : kubernetes系统组件使用。kube-public :公共资源使用。

实践7∶命名空间的创建和管理

默认的Nama&pice实践

1. 手动的创建一个NameSpace命名空间并查看

kubectl create namespace test

kubectl get namespace


2.创建一个POD并指定此POD运行在test命名空间ll

kubectl apply-f POD-1Container.yml -namespace=test


3.查看指定命名空间里的POD

kubectl get pod -n test


.创建一个限制CPU和内存大小的NameSpace

kubectl create -f ns-cpu-men.yml -namespace=quota-mem-cpu-example

kubectl get resourcequota mem-cpu-demo -

namespace=quota-mem-cpu-example R--output=yaml


1. (判断题)若需要从客户端机器访问kubernetes集群,可以选择使用kubernetes命令行工具kubectl。

true

false

2. (单选题)Kubernetes管理的最小对象单元是?

Deployment

Pod

ReplicaSet

Container

3. (单选题)如果一组Pod对外提供服务(比如HTTP),它们的IP很有可能发生变化,那么客户端如何找到并访问这个服务?

DaemonSet

Jobs

Namespace

Service


4. (多选题)以下哪些是云容器引擎CCE的优势?

高性能

安全可靠

开放兼容

简单易用


5. (多选题)以下关于NameSpace的说法正确的是?

Kubernetes可以使用Namespaces创建多个虚拟集群

Namespace为名称提供了一个范围

资源的Names在Namespace中不具有唯一性

Kubernetes中的集群默认会有一个叫default的namespace


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6月前
|
Kubernetes Shell API
技术笔记:K8s中大量Pod是Evicted状态,这是咋回事?
技术笔记:K8s中大量Pod是Evicted状态,这是咋回事?
329 0
|
弹性计算 资源调度 Kubernetes
阿里大佬力荐K8s项目实战笔记!图文并茂带你深度解析Kubernetes
Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等功能,提高了大规模容器集群管理的便捷性。【Kubernetes是容器集群管理工具】
|
Kubernetes 监控 Devops
大厂直通车!GitHub独一份的Jenkins+k8s核心知识笔记(全彩版)
随着容器的兴起和迅速发展,Kubernetes(K8s)应运而生,现在不仅京东、阿里、谷歌、百度等大公司在使用,就连中小型企业也开始把业务迁移到了k8s上。 K8s在如下图的领域中占据了重要的地位,数万的企业和用户都选择使用K8s。任何一个招聘网站上和K8s相关的职位,月薪都是2w以上,或者更多。
|
运维 Kubernetes 监控
正道的光!阿里爆款Jenkins+K8s笔记终于全网开源了
前段时间公司的服务大升级使用Jenkins+Docker+K8S自动化部署之后,感觉用起来有点大快人心之感。 攻城狮本地开发,开发完成后提交代码到代码仓库,自动触发jenkins进行持续集成与部署,部署完成会收到结果邮件。项目运行过程中可通过日志系统查看程序日志,有异常会触发监控系统发送报警。从编码到上线后结果反馈都可以攻城狮自主完成,形成完整闭环,完整流程的工具链及协助异常情况的处理,工作量减少了,效率也高了。
|
Kubernetes jenkins 持续交付
膜拜!阿里内部爆款K8s+Docker+Jenkins实战笔记,不能再详细了!
膜拜!阿里内部爆款K8s+Docker+Jenkins实战笔记,不能再详细了!
|
存储 缓存 资源调度
深入理解 K8S 资源管理和调度|青训营笔记
本篇文章首先讲解K8S的整体架构,介绍各个模块的功能,在此基础上梳理K8S使用各个组件完成项目部署时涉及的资源管理和调度方式
261 0
深入理解 K8S 资源管理和调度|青训营笔记
|
存储 Kubernetes 关系型数据库
关于K8s中Ansible AWX(awx-operator)平台Helm部署的一些笔记
整理一些K8s中通过Helm的方式部署AWX的笔记分享给小伙伴 博文内容为部署过程和遇到问题的解决过程 食用方式: 需要了解K8s 需要预置的K8s+Helm环境 需要科学上网 理解不足小伙伴帮忙指正 嗯,疫情快点结束吧 ^_^
1130 0
关于K8s中Ansible AWX(awx-operator)平台Helm部署的一些笔记
|
Kubernetes 安全 Docker
Kubernetes CKS 2021 Complete Course + Simulator笔记【1】---k8s架构介绍
Kubernetes CKS 2021 Complete Course + Simulator笔记【1】---k8s架构介绍
Kubernetes CKS 2021 Complete Course + Simulator笔记【1】---k8s架构介绍
|
缓存 Kubernetes 网络协议
k8s安装笔记
k8s安装笔记
k8s安装笔记
|
Kubernetes 负载均衡 监控
关于K8s中Headless Service的一些笔记
分享一些 K8s 中 Headless Service 的笔记 博文内容涉及: Headless Service 的简单介绍 Headless Service 创建 集群内/外 获取 Headless Service对应 Pod 列表的 Demo 理解不足小伙伴帮忙指正
427 0