首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >k8s 资源管理_pod容器间调用命令

k8s 资源管理_pod容器间调用命令

作者头像
全栈程序员站长
发布2022-09-22 12:16:01
发布2022-09-22 12:16:01
6460
举报

大家好,又见面了,我是你们的朋友全栈君。

k8s

管理器介绍

在Kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理Kubernetes。

  • Kubernetes的本质就是一个集群系统,用户可以在集群中部署各种服务。所谓的部署服务,其实就是在Kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。
  • Kubernetes的最小管理单元是Pod而不是容器,所以只能将容器放在Pod中,而Kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。
  • Pod提供服务之后,就需要考虑如何访问Pod中的服务,Kubernetes提供了Service资源实现这个功能。
  • 当然,如果Pod中程序的数据需要持久化,Kubernetes还提供了各种存储系统。

Pod控制器是为了管理Pod,Pod如果想让外界访问 就需要通过service代理 外部访问service就能访问Pod了

学习kubernets的核心,就是学习如何对集群中的Pod、Pod控制器、Service、存储等各种资源进行操作。

yaml

YAML是一个类似于XML、JSON的标记性语言。它强调的是以“数据”为中心,并不是以标记语言为重点。因而YAML本身的定义比较简单,号称是“一种人性化的数据格式语言”。

YAML的语法比较简单,主要有下面的几个:

  • 大小写敏感。
  • 使用缩进表示层级关系。
  • 缩进不允许使用tab,只允许空格(低版本限制)。
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可。
  • ‘#’表示注释。
  • YAML支持以下几种数据类型:
  • 常量:单个的、不能再分的值。
  • 对象:键值对的集合,又称为映射/哈希/字典。
  • 数组:一组按次序排列的值,又称为序列/列表。

YAML常量 #常量,就是指的是一个简单的值,字符串、布尔值、整数、浮点数、NUll、时间、日期

布尔类型 c1: true

整型 c2: 123456

浮点类型 c3: 3.14

null类型 c4: ~ # 使用~表示null

日期类型 c5: 2019-11-11 # 日期类型必须使用ISO 8601格式,即yyyy-MM-dd

时间类型 c6: 2019-11-11T15:02:31+08.00 # 时间类型使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

字符串类型 c7: haha # 简单写法,直接写值,如果字符串中间有特殊符号,必须使用双引号或单引号包裹 c8: line1 line2 # 字符串过多的情况可以折成多行,每一行都会转换成一个空格 2.2.2 对象

对象

  1. 形式一(推荐): xudaxian: name: 许大仙 age: 16
  2. 形式二(了解): xuxian: { name: 许仙, age: 18 }

数组

  1. 形式一(推荐): address:
    • 江苏
    • 北京
  2. 形式二(了解): address: [江苏,上海]

资源管理器介绍

  • 命令式对象管理:直接使用命令去操作kubernetes的资源。
代码语言:javascript
复制
kubectl run nginx-pod --image=nginx:1.17.1 --port=80
  • 命令式对象配置:通过命令配置和配置文件去操作kubernetes的资源。 命令依然是命令 参数转移到配置文件中
代码语言:javascript
复制
kubectl create/patch -f nginx-pod.yaml
  • 声明式对象配置:通过apply命令和配置文件去操作kubernetes的资源。 aplly只用于创建喝更新Pod
代码语言:javascript
复制
kubectl apply -f nginx-pod.yaml

类型

操作

场景

优点

缺点

命令式对象管理

对象

测试

简单

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

命令式对象配置

文件

开发

可以审计、跟踪

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

声明式对象配置

目录

开发

支持目录操作

意外情况下难以调试

命令式对象管理 kubectl命令 kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。 kubectl命令的语法如下: kubectl [command] [type] [name] [flags]

  • command:指定要对资源执行的操作,比如create、get、delete。
  • type:指定资源的类型,比如deployment、pod、service。
  • name:指定资源的名称,名称大小写敏感。
  • flags:指定额外的可选参数。
代码语言:javascript
复制
#查看所有的pod
kubectl get pods

#示例:查看某个pod
kubectl get pod pod_name

#示例:查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml

操作(command) kubernetes允许对资源进行多种操作,可以通过–help查看详细的操作命令:

代码语言:javascript
复制
kubectl --help

基本命令

运行喝调试

高级命令

其他命令

资源类型(type)

集群级别资源:

Pod资源:

Pod资源控制器:

服务发现资源:

存储资源:

配置资源:

应用示例

代码语言:javascript
复制
#创建一个namespace 
kubectl create namespace dev

#获取namespace 
kubectl get namespace
kubectl get ns

#在dev名称空间下创建一个dev
kubectl run nginx --image=nginx:1.17.1 -n dev

#查看dev名称空间下的所有Pod 如果不指定则默认是default名称空间
kubectl get pods -n dev
kubectl delete pod nginx -n dev

#删除指定的namespace 则所有dev下的Pod都会被删除
kubectl delete namespace dev

命令式对象配置 命令式对象配置就是使用命令配合配置文件一起来操作kubernetes资源 应用示例

创建一个nginxpod.yaml,内容如下:

代码语言:javascript
复制
apiVersion: v1
kind: Namespace
metadata:
  name: dev
---
apiVersion: v1
kind: Pod
metadata:
  name: nginxpod
  namespace: dev
spec:
  containers:
    - name: nginx-containers
      image: nginx:1.17.1
代码语言:javascript
复制
#执行create命令,创建资源
kubectl create -y nginxpod.yaml

#执行get命令,查看资源:
kubectl get -f nginxpod.yaml

#执行delete命令,删除资源
kubectl delete -f nginxpod.yaml 

命令式对象配置的方式操作资源,可以简单的认为:命令+yaml配置文件(里面是命令需要的各种参数)。

声明式对象配置

  • 声明式对象配置:通过apply命令和配置文件去操作kubernetes的资源。
  • 声明式对象配置和命令式对象配置类似,只不过它只有一个apply命令。
  • apply相当于create和patch。
代码语言:javascript
复制
kubectl apply -f nginxpod.yaml

扩展 kubectl的运行需要进行配置,它的配置文件是$HOME/.kube,如果想要在Node节点上运行此命令,需要将Master节点的.kube文件夹复制到Node节点上,即在Master节点上执行下面的操作:

代码语言:javascript
复制
scp -r $HOME/.kube k8s-node1:$HOME

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168531.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • k8s
  • 管理器介绍
  • yaml
  • 资源管理器介绍
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档