k8s容器入门

news2024/11/23 17:24:11

一、k8s入门

1.什么是容器

降低虚拟机造成的物理主机资源浪费,提高物理主机的利用率,并能提供像虚拟机一样狼好的应用程序隔离运行环境,人们把这种轻量型的虚拟机,称为容器。

2. 容器的管理工具

主要用于容器的创建、启动、关闭、删除等
管理工具:

  • docker
  • pouch
  • LXC、LXD、RKT

3.容器的编排部署工具

容器管理工具可以完成基础管理,应对企业中更复杂的应用部署,需要容器编排管理工具。
编排部署工具:

  • docker三剑客(docker machine 、docker compose、docker swarm)
  • mesos + marathon
  • kubernetes
    主要用于管理云平台中多个主机上的容器化应用,k8s的目标是让部署容器化应用建单且高效,提供了应用部署、规划、更新、维护的一种机制。

二、k8s功能、架构

1. k8s功能

可对应用进行自动化的部署、扩容、缩容。

【1】自动装箱

基于容器对应用运行环境的资源配置要求自动部署应用容器

【2】自我修复(自愈能力)

  • 当容器失败时,会对容器进行重启
  • 当所部署的noda节点有问题时,会对容器进行重新部署和重新调度
  • 当容器未通过监控检查时,会关闭此容器
  • 直到容器正常运行时,才会提供对外服务

【4】水平扩展

通过简单的指令、用户UI界面或基于CPU等资源的使用情况,对应用当容器进行规模的扩大或剪裁

【5】服务发现

用户不需要使用额外的服务发现机制,就能够基于k8s自身能力实现服务发现和负载均衡

【6】滚动更新

可以根据应用的变化,对应用容器运行的应用,进行一次性或批量更新

【7】版本回退

可以根据应用的部署情况,对应用容器运行应用,进行历史版本即时回退

【8】密匙和配置管理

在不需要重新构建镜像的情况下,可以部署和更新密匙和应用配置,类似热部署

【9】存储编排

  • 自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要
  • 存储系统可以来自于本地目录、存储网络(NFS、Gluster、Ceph、Cinder等)、公有云存储服务等

2.Node及Pod支持

  • Node(节点)数支持:早期100,现在2000
  • POd管理支持:早期1000,现在150000

三、k8s集群部署

1.应用部署架构的分类

  • 无中心节点架构:GlusterFS
  • 有中心节点架构:HDFS、K8S

2. 集群架构节点的角色功能

【1】 master node三个组件

  • k8s的控制节点,对集群进行调度管理,接受集群外用户去集群操作请求
  • master node 组成(四个组件):控制面
  1. API Server:通信
  2. kube-Scheduler:调度 通过调度算法将pod分布到节点(服务器)上
  3. Cluster State Store(ETCD数据库)/分布式键值存储
  4. Controller Manger Server :资源

【2】 worker node三个组件:用户面

  • 集群工作节点,运行用户业务应用容器1
  • worker node组成(三个组件)
    1. kubelet:worker端的管理工具,负责pod的生命周期、存储、网络管理
    2. kube proxy :网络代理,设置转发路径 ,负责service的服务发现(此处为内部服务的发现,外部服务的发现为ingress),负载均衡(4层负载)
    3. Container Runtime(运行时):创建容器的软件

【3】附加组件

  • kube - dns
  • ingress Controller:为服务提供外网入口(外部服务的发现)
    在这里插入图片描述

3. k8s部署

集群可用验证

kubbectl get node   # 节点状态
kubbectl  get cs    # 集群状态

四、k8s集群客户端kubectl命令

# 检查集群是否安装
rpm -qa | grep kubetctl
# 获取kubectl帮助
kubectl --help

使用kubectl命令的必要环境:集群链接配置文件

五、k8s集群资源清单文件(yaml)文件书写方法

1.YAML文件的书写格式

【1】YAML文件介绍

  • YAML仍为一种标记语言
  • 为了强调这种语言是以数据为中心,而不是以标记语言为重点
  • YAML是一个可读性高,用来表达数据序列的格式

【2】YAML文件基本语法

  • 使用空格作为缩进
  • 缩进空格数目不重要,只要是相同层级的元素左侧对齐就行
  • 低版本缩进不可以使用TAB键,只能使用空格
  • 使用#标识注释,从这个字符一直到行尾,都会被解释器忽略

【3】YAML支持的数据结构

  • 对象
  1. 键值对的集合
  2. 又称为映射/哈希/字典
  • 数组
  1. 一组按次序排列
  2. 又称为序列/列表
  • 纯量
    单个的,不可再分的值:数字、bool、null、时间日期。
    在YMAL中,字符串不使用引号,若是字符串中有空格或者特殊字符,可使用单引号或者双引号引起来

2.通过YAML文件实现资源清单描述方法

【1】常用字段

  • version:版本,str类型
  • kind:资源类型,str类型
  • metadata:元数据对象/资源对象,object
  • metadata.name:资源对象名称,str
  • metadata.namespace:资源对象命名空间,str
  • Spec:详细定义资源对象,资源对象描述,object

六、k8s集群namespace(命名空间)

1.介绍

  • 命名空间
  • 作用:多租户情况下,实现资源隔离
  • 属于逻辑隔离
  • 属于管理边界
  • 不属于网络边界
  • 可以针对每个namespace做资源配额

2.查看

kubect get namesapce

说明:

  • default :用户创建的pod默认在此命名空间
  • kune-public : 所有用户均可访问。包括未认证的用户
  • kube-node-lease : kubernetes 集群节点租约状态
  • kube-system : kubernetes 集群在使用

3.创建

【1】通过命令创建

kubectl create namespace test

输出: 
namespace/test created

【2】通过资源清单创建

1.准备资源清单文件
cat 01-create-ns.yam1

apiVersion: V1
kind: Namespace
metadata:
  name;demons1
  
2. 应用资源清单文件
kubectl apply -f 01-create-ns.yam1

3. 验证是否创建成功
kubectl get namespace

4.删除

【1】通过kubectl直接删除(不建议)

kubectl get namespace
kubectl delete namespace test

【2】通过kubectl命令应用资源清单文件删除(建议)

kubectl get namespace
cat 01-create-ns.yam1
kubectl delete -f 01-create-ns.yam1

七、k8s集群核心概念pod

k8s中不能直接管理容器,k8s集群中最小的调度单位为pod,因此要使用pod来运行应用容器

1. 概念

  • k8s中能够调度的最小单元
  • pod是容器的集合

2. 查看Pod

kubectl get pod
kubectl get pods
kubectl get pods --namespace default

3. 创建Pod

【1】编写用于 创建pod资源清单文件

4. Pod访问(不建议访问)

知道pod的IP地址
curl 172.xx.xx.xx

5. Pod删除方法

【1】通过kubectl直接删除(不建议)

 kubectl delete pods pod1

【2】通过kubectl命令应用资源清单文件删除(建议)

kubectl delete -f 02-create-pod.yam1

八、k8s集群核心概念controller(控制器)

了解pod的删除方法,发现pod的删除很简单,容易误操作,因此,引入另一个概念Controller(控制器),用于在k8s集群中以loop方式监视pod状态,若是发现pod被删除,会重新拉起一个pod,让pod一直保持在用户期望的状态。

1. Controller作用

  • 控制器
  • 用于对应用运行的资源进行监控
  • 当pod出现问题时,会把pod重新拉起,以达到用户期望的状态

2. Controller分类

常见pod控制器:工作服在类型,调用的RC控制器

  • Deployment :声明式更新控制器,用于发布无状态应用
    有点:后端可以无限扩容
  • ReplicaSet(RS):副本集控制器,用于对pod进行副本规模扩大或裁剪,用于发布无状态应用
  • StatefulSet:有状态副本集,用于发布有状态应用
    优点:持续稳定,可以保留IP不变
    主要特点:稳定的持久化存储,稳定的网络标志,有序部署有序扩展,有序收缩有序删除
  • DaemonSet:在k8s集群每一个Node上运行一个副本,用于发布监控或日志收集等应用
    装在每一个节点上
  • Job:运行一次性作业任务
  • CronJob:运行周期性作业任务

3. Deplyment控制器作用

  • 具有上线部署、滚动升级、创建副本、回滚到以前某一版本(成功/稳定)等功能

4. 创建Depliyment控制器类型应用方法

【1】通过kubectl命令行创建(不建议)

【2】通过kubectl命令应用资源清单文件创建(建议)

5. 删除Depliyment控制器类型应用方法

带有控制器类型的POD不建议直接删除,如果必须删除,请删除控制器的应用名称。(直接删除pod后,POD会被再次拉起)

【1】通过kubectl命令行创建

# 查看应用:
kubectl get depliyment.apps
# 删除应用;
kubectl delete depliyment.apps nginx-app

【2】通过kubectl命令应用资源清单文件创建

九、k8s集群核心概念service

1. service 概念

  • 不是实体服务
  • 是一条iptables或者ipva的转发规则

2. service作用

  • 通过service为pod客户端提供访问POD方法,即客户端访问pod入口
  • service通过pod标签与pod进行关联

3. service类型

  • ClusterIP:默认,分配一个集群内部可以访问的虚拟IP ,只能内部访问
  • NodePort:在每个Node上分配一个端口作为外部访问入口
  • LoadBalancer:工作在特定的Cloud Provider上(例如:Googel Cloud、AWS、Openstack)
  • ExternalName:表示把集群外部的服务引入到集群内部中来,即实现了集群内部pod和集群外部的服务进行通信

4. service参数

  • port:访问service使用的端口
  • targetPort:Pod中容器端口
  • NodePort:通过Node实现外网用户访问k8s集群内sercvice

5. service创建方法

【1】通过kubectl命令行创建(不建议)

默认创建的service为ClusterIP类型

# 1.创建Deploment类型应用
# 2.验证应用创建情况
get
# 3.创建service
kubectl expose deployment.apps nginx.app1 --typr=ClusterIP --tarrget-poet=80 --port=80
# 4. 查看service
kubectl get service

【2】通过kubectl命令应用资源清单文件创建(建议)

6. service删除方法

【1】通过kubectl命令行创建(不建议)

kubectl delete service nginx-app1

【2】通过kubectl命令应用资源清单文件创建(建议)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优化transformer

使用transformer而导致的时间长,可能会由于self-attention计算Query和key的值才导致的时间长,也可能会因为feed forward中的计算导致时间长。这里我们只针对第一种情况下进行优化。 第一种情况:有些问题,我们可能不需要看整个句子…

Linux安装JDK、Redis、MySQL、RabbitMQ、Minio、Nginx.......

文章目录 一、环境准备二、安装JDK三、安装MySQL四、安装Redis三、安装RabbitMQ四、安装Minio五、安装Nginx特殊情况处理Centos7挂载磁盘服务器时间同步MySQL数据库时间同步安装解压软件修改数据库SQL模式 一、环境准备 下载镜像源 中科大镜像源下载至/opt目录下修改yum源为中…

蓝桥杯专题-真题版含答案-【贪吃蛇长度】【油漆面积】【绘制圆】【高次方数的尾数】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

微服务初始

今天准备开始学习微服务,使用微服务肯定是因为他有好处。 首先了解到的三种架构,传统单体,集群架构,微服务架构 单体架构 有单点问题,如果宕机所有的服务都不可用所有业务的功能模块都聚集在一起,如果代…

POSTGRESQL PERPARE 事务提交方式,到底用还是不用

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

单Bank OTA升级:STM32G071 APP (二)

接上一篇文章:单Bank OTA升级:STM32G071 BootLoader (一):跳转链接 什么是单Bank升级:将Flash划分为以下3个区域。 BootLoader区:程序进行升级的引导程序,根据Upade_Flag来判断跳转Bank区运行程序或是接收…

spring复习:(52)注解方式下,ConfigurationClassPostProcessor是怎么被添加到容器的?

进入AnnotationConfigApplicationContext的构造方法: 进入AnnotatedBeanDefinitionReader的构造方法: 进入this(registry, getOrCreateEnvironment(registry));代码如下: 进入AnnotationConfigUtils.registerAnnotationConfigProcessors方…

贤鱼的刷题日常(数据结构栈学习)-1696:波兰表达式--(递归+栈双题解)题目详解

🏆今日学习目标: 🍀例题讲解1696:波兰表达式 ✅创作者:贤鱼 ⏰预计时间:25分钟 🎉个人主页:贤鱼的个人主页 🔥专栏系列:c 🍁贤鱼的个人社区,欢迎你…

MySQL用户管理详解

文章目录 用户管理创建用户更改密码mysql的权限分类授权实例撤销权力 mysql检查顺序相关文件信息 用户管理 创建用户 在MySQL中,创建用户是管理和授权数据库访问权限的重要操作。下面是创建用户的详细步骤: 连接到MySQL服务器:使用MySQL客户…

人员定位安全管控系统:提升安全管理水平的智能解决方案

在当今社会,人员安全管理成为各行各业关注的焦点。为了保障人员的安全和提高管理效率,人员定位安全管控系统应运而生。 人员定位安全管控系统采用多种定位技术来实现对人员位置的准确定位,如GPS(全球定位系统)、Wi-Fi…

强化学习论文《Deep Reinforcement Learning that Matters》笔记

文章目录 1. 简介2. 实验分析超参数网络架构Reward ScaleRandom Seeds and TrailsEnvironmentCodebases 3. Reporting Evaluation MetricsOnline view vs. Policy OptimizationConfidence BoundsPower AnalysisSignificance 4. 结论5. 参考资料 1. 简介 这篇2017年的论文 是强化…

【PHP】phpstudy添加的网站,访问出现 嗯… 无法访问此页面

使用phpstudy创建网站,只有localhost可以访问, 其他所有网站无法访问,可能是你的账户没有修改vhost的权限 找到 C:\Windows\System32\drivers\etc下的vhost文件, 1、右键属性 将只读去掉 2、把用户对此文件的控制权限全部勾上 …

解决直播间源码音视频不同步问题的有效方式

随着网络技术的发展和移动设备的普及,电视、电脑、手机等数码产品越来越智能,我们不管是在家或是在外面都可以运用不同的数码产品去看剧或是短视频等,但可能很多人遇到过这样一种情况:当我们在看剧或是短视频的时候,可…

微信小程序可输入弹窗

addWhite() {wx.showModal({title: 添加白名单,editable: true, // 可输入content: ,complete: (res) > {if (res.confirm) {if (!res.content) { // 输入的值wx.showToast({title: 请填写白名单,icon: error})this.addWhite()}else {// 调接口}}}})},

Linux命令-按照与使用(17)(转载)解决同一台服务器上部署多个tomcat的同一个项目session冲突问题...

———————————————— 版权声明:本文为CSDN博主「strive_or_die」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/strive_or_die/article/details/103191546…

EXCEL模板如何自定义并使用?

文章目录 0.引言1.新建EXCEL2.EXCEL另存为模板3.使用模板 0.引言 使用Excel模板可以帮助用户更高效地处理和分析大量数据,简化重复任务,并提供清晰直观的数据可视化效果。对于需要频繁进行数据处理和分析的个人或组织来说,使用Excel模板是一个…

半导体自动化专用除静电设备的特点和功能

半导体自动化专用离子风机是一种用于半导体制造过程中的特殊风机设备。它通过产生带电粒子(离子)的气流来实现静电去除和除尘,以确保半导体制造环境的洁净和无尘。 以下是半导体自动化专用离子风机的一些特点和功能: 1. 静电去除…

听GPT 讲K8s源代码--pkg(七)

k8s项目中 pkg/kubelet/config,pkg/kubelet/configmap,pkg/kubelet/container,pkg/kubelet/cri 这几个目录处理与 kubelet 配置、ConfigMap、容器管理和容器运行时交互相关的功能。它们共同构成了 kubelet 的核心功能,使其能够在 …

在外远程查看家里内网监控

在外远程查看家里内网监控 现代生活节奏紧张,巨大的压力压得我们喘不过气来,因此很多人选择在家里养一只陪伴我们的宠物,用以舒缓紧张的情绪和繁重的压力。但养了这些小家伙后,不在家时又总想随时看看家里小可爱们的情况&#xf…

STL:双端队列容器适配器仿函数优先级队列

deque 双端队列可以在头部和尾部进行插入删除操作与vector相比,头插效率高,不需要搬移元素 与list相比,空间利用率高 deque逻辑上空间是连续的,物理上并不是,是由一段段小空间拼接而成的 双端队列的迭代器比较复杂 cur…