k8s-资源管理、实战入门

news2025/1/10 2:06:17

资源管理

一、资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 (1)kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个容器,并将指定的程序跑在容器中。 (2)Kubernetes的最小管理单元是pod,而不是容器,所以只能将容器放在pod中,而kubernetes一般也不会直接管理pod,而是通过pod控制器来管理pod。 (3)Pod可以提供服务之后,就要考虑如何访问pod中服务,kubernetes提供了service资源实现这个功能。 (4)如果pod中程序的数据需要持久化,kubernetes还提供了各种存储系统。

 学习kubernetes的核心就是学习如何对集群中pod、pod控制器、service、存储等各种资源进行操作。 二、资源管理方式 (1)命令式对象管理:直接使用命令去操作kubernetes资源 kubectl  run  nginx-pod  --image=nginx:1.17.1  --port=80 (2)命令式对象配置:通过命令配置和配置文件去操作kubernetes资源 Kubectl  create/path  -f  nginx-pod.yml (3)声明式对象配置:通过apply和配置文件去操作kubernetes资源 Kubectl  apply   -f   nginx-pod.yml

类型

操作对象

适用环境

优点

缺点

命令式对象管理

对象

测试

简单

只能操作活动对象,无法审计、跟踪

命令式对象配置

文件

开发

可以审计、跟踪

项目大时,配置文件多,操作麻烦

声明式对象配置

目录

开发

支持目录操作

意外情况下难以调试

1、命令式对象管理 Kubectl命令 Kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。Kubectl命令的语法如下: Kubectl  [command]  [type]  [name]  [flags] Command: 指定要对资源执行的操作,比如:create、get、delete Type:指定资源类型,比如deployment、pod、service Name:指定资源的名称,名称大小写敏感 Flags:指定额外的可选参数 //查看所有pod kubectl  get  pods //查看某个pod kubectl  get  pod  pod_name //查看某个pod,以yaml格式展示结果 kubectl   get   pod  pod_name   -o   yaml 资源类型: Kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看: kubectl  api-resources 

经常使用的资源有下面这些:

资源分类

资源名称

缩写

资源作用

集群资源

nodes

no

集群组成部分

Namespaces

namespace

ns

隔离pod

Pod资源

pods

po

装载容器

Pod资源控制器

replicationcontrollers

rc

控制pod资源

replicasets

rs

控制pod资源

deployment

deploy

控制pod资源

daemonsets

ds

控制pod资源

jobs

控制pod资源

cronjobs

cj

控制pod资源

horizontalpodautoscalers

hpa

控制pod资源

statefulsets

sts

控制pod资源

服务发现资源

services

svc

统一pod对外接口

ingress

ing

统一pod对外接口

存储资源

volumeattachements

存储

persistentvolumes

pv

存储

persistentvolumeclaims

pvc

存储

配置资源

configmaps

cm

配置

secrets

配置

操作:

Kubernetes允许对资源进行多种操作,可以通过--help查看详细的操作命令

kubectl  --help

经常使用的操作有下面这些:

命令分类

命令

翻译

命令作用

基本命令

create

创建

创建一个资源

edit

编辑

编辑一个资源

get

获取

获取一个资源

patch

更新

更新一个资源

delete

删除

删除一个资源

explain

解释

展示资源文档

run

运行

在集群中运行一个指定的镜像

expose

暴露

暴露资源为service

describe

描述

显示资源内部信息

logs

日志输出容器在pod中的日志

输出容器在pod中的日志

attach

缠绕进入运行中的容器

进入运行中的容器

exec

执行容器中的一个命令

执行容器中的一个命令

cp

复制

在pod内外复制文件

rollout

首次展示

管理资源的发布

scale

规模

扩(缩)容pod的数量

autoscale

自动调整

自动调整pod的数量

高级命令

apply

Rc

通过文件对资源进行配置

label

标签

通过文件对资源进行配置

其他命令

cluster-info

集群信息

显示集群信息

version

版本

显示当前server和client版本

//启动脚本
[root@master ~]# bash /etc/modules-load.d/ipvs.modules 

//创建命名空间
[root@master ~]# kubectl apply -f a.yaml
namespace/lsy created
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   20h
kube-node-lease   Active   20h
kube-public       Active   20h
kube-system       Active   20h
lsy               Active   3s

//创建pod
[root@master ~]# kubectl run nginx --image=nginx --port=80 -n lsy
pod/nginx created

//查看pod
[root@master ~]# kubectl get pods -n lsy
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          18s

//查看新创建的pod
[root@master ~]# kubectl get pods -n lsy
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          2m

//查看详情,并且访问
[root@master ~]# kubectl get pods -n lsy -o wide
NAME    READY   STATUS    RESTARTS   AGE    IP             NODE    NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          2m7s   172.16.104.5   node2   <none>           <none>
[root@master ~]# curl http://172.16.104.5
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

//删除pod
[root@master ~]# kubectl delete pod nginx -n lsy
pod "nginx" deleted

//查看deployment,删除deployment
[root@master ~]# kubectl get deployment
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   1/1     1            1           19h
[root@master ~]# kubectl delete deployment nginx

//配置yaml文件
[root@master ~]# vim b.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: lsy
spec:
  containers:
  - image: nginx
    name: pod
    ports:
    - name: web
      containerPort: 80
      protocol: TCP                
[root@master ~]# kubectl apply -f b.yaml
pod/nginx created
[root@master ~]# kubectl delete -f b.yaml
pod "nginx" deleted

//打标签
[root@master ~]# kubectl label pod nginx version=1.0 -n lsy
pod/nginx labeled

//更新标签1
[root@master ~]# kubectl label pod nginx version=2.0 -n lsy --overwrite
pod/nginx labeled

//查看标签
[root@master ~]# kubectl get pod nginx  -n lsy --show-labels
NAME    READY   STATUS    RESTARTS   AGE   LABELS
nginx   1/1     Running   0          94s   version=2.0

//筛选标签
[root@master ~]# kubectl get pod nginx-test  -n lsy --show-labels
NAME         READY   STATUS    RESTARTS   AGE     LABELS
nginx-test   1/1     Running   0          2m43s   run=nginx-test,version=1.2

//配置yaml
[root@master ~]# kubectl apply -f c.yaml
pod/nginx123 created
[root@master ~]# 
[root@master ~]# kubectl get pods -n lsy --show-labels
NAME         READY   STATUS    RESTARTS   AGE   LABELS
nginx        1/1     Running   0          24m   version=2.0
nginx-test   1/1     Running   0          21m   run=nginx-test
nginx123     1/1     Running   0          34s   app=nginx,version=3.0

//创建指定副本数量
[root@master ~]# kubectl create deployment nginx --image=nginx:latest --port=80 --replicas=3 -n lsy
deployment.apps/nginx created
[root@master ~]# kubectl get pods -n lsy
NAME                     READY   STATUS              RESTARTS   AGE
nginx-7c79c4bf97-2gbpp   0/1     ContainerCreating   0          13s
nginx-7c79c4bf97-77kl4   1/1     Running             0          13s
nginx-7c79c4bf97-nn2ss   0/1     ContainerCreating   0          13s

//查看详细信息
[root@master ~]# kubectl describe deploy nginx -n lsy
Name:                   nginx
Namespace:              lsy
CreationTimestamp:      Tue, 24 Sep 2024 14:37:41 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx
Replicas:               3 desired | 3 updated | 3 total | 2 available | 1 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx:latest
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      False   MinimumReplicasUnavailable
  Progressing    True    ReplicaSetUpdated
OldReplicaSets:  <none>
NewReplicaSet:   nginx-7c79c4bf97 (3/3 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  2m5s  deployment-controller  Scaled up replica set nginx-7c79c4bf97 to 3

// 配置yaml
[root@master ~]# vim d.yaml
[root@master ~]# kubectl apply -f d.yaml
deployment.apps/lsynginx created
[root@master ~]# kubectl get deploy -n lsy
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
lsynginx   5/5     5            5           20s
nginx      4/4     4            4           8m27s
[root@master ~]# kubectl get pods -n lsy
NAME                        READY   STATUS    RESTARTS   AGE
lsynginx-7c5ddbdf54-2fqrc   1/1     Running   0          39s
lsynginx-7c5ddbdf54-bbx6v   1/1     Running   0          39s
lsynginx-7c5ddbdf54-g9qx7   1/1     Running   0          39s
lsynginx-7c5ddbdf54-k7jmj   1/1     Running   0          39s
lsynginx-7c5ddbdf54-l2rsb   1/1     Running   0          39s
nginx-7c79c4bf97-2gbpp      1/1     Running   0          8m46s
nginx-7c79c4bf97-77kl4      1/1     Running   0          8m46s
nginx-7c79c4bf97-nn2ss      1/1     Running   0          8m46s
nginx-7c79c4bf97-rrzjf      1/1     Running   0          5m35s

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

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

相关文章

SpringBoot高校学科竞赛平台:性能优化与实践

3系统分析 3.1可行性分析 通过对本高校学科竞赛平台实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本高校学科竞赛平台采用SSM框架&#xff0c;JAVA作为开发语…

详细分析Redisson分布式锁中的renewExpiration()方法

目录 一、Redisson分布式锁的续期 整体分析 具体步骤和逻辑分析 为什么需要递归调用&#xff1f; 定时任务的生命周期&#xff1f; 一、Redisson分布式锁的续期 Redisson是一个基于Redis的Java分布式锁实现。它允许多个进程或线程之间安全地共享资源。为了实现这一点&…

C++ 高级特性:函数重载、内联函数、引用、auto关键字、范围for循环和nullptr空指针

目录&#xff1a; &#x1f4d1;前言&#x1f4d6;函数重载&#x1f4d6;内联函数&#x1f4d6;引用☁️引用的概念☁️引用的特性⭐引用在定义时必须初始化⭐一个变量可以有多个引用(类比于一个人可以有多个外号)⭐ 引用一旦引用一个实体&#xff0c;再不能引用其他实体 ☁️常…

关于WPF(Windows Presentation Foundation)中Grid控件

本文将从Grid控件的基础概念开始&#xff0c;逐步深入探讨其特性、用法、实例代码&#xff0c;以及最佳实践。 1. WPF和布局简介 WPF是一种用于构建Windows桌面应用程序的UI框架&#xff0c;它通过XAML&#xff08;Extensible Application Markup Language&#xff09;使开…

java计算机毕设课设—扫雷游戏(附源码、文章、相关截图、部署视频)

这是什么系统&#xff1f; 资源获取方式再最下方&#xff08;本次10月份活动福利&#xff0c;免费提供下载&#xff0c;自行到对应的方式1下载&#xff0c;csdn的0积分下载&#xff09; java计算机毕设课设—扫雷游戏(附源码、文章、相关截图、部署视频) 基于Java的扫雷游戏…

电子电气架构 --- 智能网联汽车未来是什么样子?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

C3D网络介绍及代码撰写详解(总结3)

可以从本人以前的文章中可以看出作者以前从事的是嵌入式控制方面相关的工作&#xff0c;是一个机器视觉小白&#xff0c;之所以开始入门机器视觉的学习主要是一个idea&#xff0c;想把机器视觉与控制相融合未来做一点小东西。废话不多说开始正题。&#xff08;如有侵权立即删稿…

基于微信小程序的在线点歌系统(论文+源码)-kaic

摘 要 随着社会与互联网的发展&#xff0c;人们已经不在停留在温饱的层面上&#xff0c;而是开始了享受生活&#xff0c;而最能突出网络飞速发展的当属娱乐&#xff0c;从最初的网吧上网到现在的我们可以随时随地上网&#xff0c;观看自己喜欢的各式各样的电影电视剧和短视频&a…

数据结构与算法 - 顺序表与链表的区别

文章目录 前言 一、顺序表与链表的定义 1、顺序表 2、链表 二、区别 1、顺序表(动态顺序表)&#xff1a; 2、链表(带头双向循环链表)&#xff1a; 3、将上述文字用图表形式展示&#xff1a; 4、CPU高速缓存命中率 总结 前言 路漫漫其修远兮&#xff0c;吾将上下而求索…

Nginx实战指南:基础知识、配置详解及最佳实践全攻略

背景 在Java系统实现过程中&#xff0c;我们不可避免地会借助大量开源功能组件。然而&#xff0c;这些组件往往功能丰富且体系庞大&#xff0c;官方文档常常详尽至数百页。而在实际项目中&#xff0c;我们可能仅需使用其中的一小部分功能&#xff0c;这就造成了一个挑战&#…

数组中两个字符串的最小距离(图+文字详解)

链接&#xff1a;数组中两个字符串的最小距离__牛客网 题目:给定一个字符串数组strs&#xff0c;再给定两个字符串str1和str2&#xff0c;返回在strs中str1和str2的最小距离&#xff0c;如果str1或str2为null&#xff0c;或不在strs中&#xff0c;返回-1。 思路: 给定两个下标…

Pycharm 随时调整字体大小(放大或缩小)

实现按住 ctrl 滑动鼠标滚轮实现代码窗口字体大小调整&#xff1a; File 一>Settings 一>Editor一>General里 的Mouse Control把Change font size with CtrlMouse Wheel打上对勾&#xff0c;点击OK即可 使用快捷键 放大字体&#xff1a; Windows/Linux: Ctrl macOS…

IP报文格式、IPv6概述

IPv4报文格式 IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下)&#xff0c;下面来逐一介绍首部各个字段的含义 Version版本&#xff1a;表示采用哪一种具体的IP协议&#xff0c;对于IPv4来说该字段就填充4以表示&#xff0c;如果是IPv6就填充6IHL首部长度&#xff…

Android内容观察者(案例:监听数据库+代码+效果图)

目录 1.内容观察者概念 1. 什么是 ContentObserver&#xff1f; 2. 主要方法 3. 使用场景 4. 工作原理 5. 注册和注销 6. 实现步骤 7. 注意事项 2.创建内容观察者 3.注册内容观察者 4.取消注册内容观察者 5.完整的activity代码 6.案例:检测数据库 1&#xff09;创建一个Android…

HTML(五)列表详解

在HTML中&#xff0c;列表可以分为两种&#xff0c;一种为有序列表。另一种为无序列表 今天就来详细讲解一下这两种列表如何实现&#xff0c;效果如何 1.有序列表 有序列表的标准格式如下&#xff1a; <ol><li>列表项一</li><li>列表项二</li>…

Linux下CMake入门

CMake的基础知识 什么是 CMake CMake 是一个跨平台的构建工具&#xff0c;主要用于管理构建过程。CMake 不直接构建项目&#xff0c;而是生成特定平台上的构建系统&#xff08;如 Unix 下的 Makefile&#xff0c;Windows 下的 Visual Studio 工程&#xff09;&#xff0c;然后…

《OpenCV计算机视觉》—— 人脸检测

文章目录 一、人脸检测流程介绍二、用于人脸检测的关键方法1.加载分类器&#xff08;cv2.CascadeClassifier()&#xff09;2.检测图像中的人脸&#xff08;cv2.CascadeClassifier.detectMultiscale()&#xff09; 三、代码实现 一、人脸检测流程介绍 下面是一张含有多个人脸的…

电子电气架构---软件定义汽车,产业变革

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

影刀RPA实战:操作Mysql数据库

1.摘要 影刀RPA&#xff08;Robotic Process Automation&#xff09;是一种软件自动化工具&#xff0c;它可以模拟人类用户执行各种重复性任务&#xff0c;其中包括对数据库的操作。 我们可以使用软件自动化指令&#xff0c;通过获取数据库窗口对象来操作数据库&#xff0c;也…

JSP 的 response 和 session 内置对象

文章目录 前言一、response 内置对象 1.重定向网页2.处理 HTTP 文件头3.设置输出缓存二、session 内置对象 1.创建及获取客户会话2.会话中移动指定的绑定对象3.销毁 session 内置对象4.会话超时的管理5. session 对象的应用总结 前言 JSP 的 response 和 session 内置对像&…