热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s对资源的管理方式

一、描述

k8s一般在对对象进行管理的时候,一般又三种常见操作,分别为命令式对象管理、命令式对象配置、申明式对象配置。

命令式对象管理操作简单,操作的是对象,但是不方便审计,

kubectl   run  nginx-pod --image=nginx:1.17.1  --port=80

命令式对象配置,简单说就是把命令式管理的一些参数写到一个配置文件里,可以审计,一般操作的对象是文件,但是如果项目很大时,配置文件多,操作麻烦;

kubectl   create/delete/patch  -f  nginx-pod.yaml

申明式对象配置,只能用于创建和更新资源,不对进行其它操作,可以对目录操作,比如把很多个yaml文件放到一个目录里,进行全部操作,很方便,如果出现错误难以排查

kubectl  apply -f nginx-pod.yaml

二、命令式对象管理

kubectl是kubernetes集群的命令行工具,通过它能对集群本身进行管理,并能够在集群上对容器化应用的安装部署,一般语法如下

kubectl   [command]   [type]    [name]  [flags]

command:指定要对资源执行的操作,如create、get 、 delete 等

type:指定资源类型,如pod、service、deployment

name:指定资源的名称,大小写敏感

flags:指定额外的可选参数

command的常用命令如下:

k8s对资源的管理方式

 type:资源类型

除了有pod、service、deployment其实还有很多,可以通过kubectl api-resources查看

常用的资源有如下资源

k8s对资源的管理方式

 

 

 实操:

1、运行一个名为nginx-dev的pod的nginx,版本是1.17.1

[root@master ~]# kubectl run nginx-dev --image=nginx:1.17.1 --port=80
pod/nginx-dev created

2、查询所有的pod

[root@master ~]# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
nginx-7cbb8cd5d8-vpkgt    1/1     Running   0          4m39s
nginx-dev                 1/1     Running   0          2m46s
nginx-pod                 1/1     Running   0          10m
tomcat-6fb574f6dd-dmjkp   1/1     Running   0          3h36m

3、查询指定的pod

[root@master ~]# kubectl  get pod nginx-dev
NAME        READY   STATUS    RESTARTS   AGE
nginx-dev   1/1     Running   0          3m36s

4、创建一个namespaces

[root@master ~]# kubectl create ns test
namespace/test created

5、查询一个指定名字的namespaces

[root@master ~]# kubectl  get ns  test 
NAME   STATUS   AGE
test   Active   84s

6、指定一个pod运行在namespaces为test下

[root@master ~]# kubectl run nginx-1 --image=nginx:1.17.1 --port=80  -n test
pod/nginx-1 created
[root@master ~]# 
[root@master ~]# 
[root@master ~]# 
[root@master ~]# kubectl  get pod
NAME                      READY   STATUS    RESTARTS   AGE
nginx-7cbb8cd5d8-vpkgt    1/1     Running   0          15m
nginx-dev                 1/1     Running   0          13m
nginx-pod                 1/1     Running   0          20m
tomcat-6fb574f6dd-dmjkp   1/1     Running   0          3h47m
[root@master ~]# 
[root@master ~]# 
[root@master ~]# kubectl  get pod  -n  test
NAME      READY   STATUS    RESTARTS   AGE
nginx-1   1/1     Running   0          82s


默认查询是只显示default的namespaces下的pod,要显示指定的namespaces 需要加上-n参数

7、删除一个pod

[root@master ~]# kubectl  get pod  -n  dev
No resources found in dev namespace.
[root@master ~]# 
[root@master ~]# kubectl  get pod  -n test
NAME      READY   STATUS    RESTARTS   AGE
nginx-1   1/1     Running   0          7m56s
[root@master ~]# 
[root@master ~]# kubectl delete pod nginx-1
Error from server (NotFound): pods "nginx-1" not found
[root@master ~]# 
[root@master ~]# kubectl delete pod nginx-1 -n test
pod "nginx-1" deleted


默认删除的是default的namespaces下的pod   需要用-n参数指定pod所在的namespaces

 三、命令式对象配置

命令是对象配置只是把一些参数写到了配置文件中,下面来写一个nginx的yaml文件

[root@master ~]# cat nginx-pod-123.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: dev


---
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod-123
  namespace: dev
spec:
  containers:
  - name: nginx-containers
    image: nginx:1.17.1

 指定yaml文件创建pod

[root@master ~]# kubectl   create -f nginx-pod-123.yaml 
namespace/dev created
pod/nginx-pod-123 created
[root@master ~]# 
[root@master ~]# kubectl  get pod
NAME                      READY   STATUS    RESTARTS   AGE
nginx-7cbb8cd5d8-vpkgt    1/1     Running   0          36m
nginx-pod                 1/1     Running   0          41m
tomcat-6fb574f6dd-dmjkp   1/1     Running   0          4h7m
[root@master ~]# 
[root@master ~]# kubectl  get pod -n dev
NAME            READY   STATUS    RESTARTS   AGE
nginx-pod-123   1/1     Running   0          25s

四、声明式对象配置

声明式对象配置和前面的命令式对象配置差不多,只是yaml文件有变化才更新,没有变化就不更新

[root@master ~]# kubectl  apply -f nginx-pod-123.yaml 
namespace/dev unchanged
pod/nginx-pod-123 configured
[root@master ~]# 
[root@master ~]# kubectl  apply -f nginx-pod-123.yaml 
namespace/dev unchanged
pod/nginx-pod-123 unchanged

  

 


推荐阅读
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • k8s之Service介绍
    1、Service是什么?​Service是一种k8s集群中访问pod的一种策略。k8s中的pod具有生命周期,且不可复活。每个pod有着自己的IP地址,pod的销毁与创建都会创新 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 本文介绍了如何将Spring属性占位符与Jersey的@Path和@ApplicationPath注解结合使用,以便在资源路径中动态解析属性值。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 作为一名新手开发者,我正在尝试使用 ASP.NET 和 Vue.js 构建一个单页面应用,涉及多个复杂组件(如按钮、图表等)。希望有经验的开发者能够提供指导。 ... [详细]
  • 深入理解Java多线程与并发机制
    本文探讨了Java多线程和并发机制的核心概念,包括多线程类的分类、执行器框架、并发容器及控制工具。通过详细解析这些组件,帮助开发者更好地理解和应用多线程技术。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 检查 Kubernetes 系统命名空间中的 Pod 状态时,发现 Metric Server Pod 虽然处于运行状态,但存在异常:日志显示 'it doesn’t contain any IP SANs'。 ... [详细]
  • k8shelm官网:https:helm.sh点击charts:https:artifacthub.iopackagessearch?sortrelevance&page11.1h ... [详细]
author-avatar
DREAM2502930781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有