• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
gys001
博客园    首页    新随笔    联系   管理    订阅  订阅

k8s资源管理及常用命令介绍

资源管理

资源管理介绍

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

kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。

kubernetes的最小管理单元是pod而不是容器,所以只能将容器放在`Pod`中,而kubernetes一般也不会直接管理Pod,而是通过`Pod控制器`来管理Pod的。

Pod可以提供服务之后,就要考虑如何访问Pod中服务,kubernetes提供了`Service`资源实现这个功能。

当然,如果Pod中程序的数据需要持久化,kubernetes还提供了各种`存储`系统。

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

image-20200406225334627

常见资源类型

kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看:

kubectl api-resources

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

集群级别资源

pod资源

pod资源控制器

服务发现资源

存储资源

配置资源

资源管理方式

- 命令式对象管理:直接使用命令去操作kubernetes资源
kubectl run nginx-pod --image=nginx:1.17.1 --port=80

命令式对象配置:通过命令配置和配置文件去操作kubernetes资源
kubectl create/patch -f nginx-pod.yaml

声明式对象配置:通过apply命令和配置文件去操作kubernetes资源
kubectl apply -f nginx-pod.yaml

命令式对象管理

kubectl命令

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

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

comand:指定要对资源执行的操作,例如create、get、delete
type:指定资源类型,比如deployment、pod、service
name:指定资源的名称,名称大小写敏感
flags:指定额外的可选参数

# 查看所有pod
kubectl get pod

# 查看某个pod
kubectl get pod pod_name

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

#查看某个pod的详细信息
kubectl get pod pod_name -o wide

常用命令(command)

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

kubectl --help

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

基本命令

运行和调试命令

高级命令

其他命令

 
命令举例

下面以一个namespace / pod的创建和删除简单演示下命令的使用:

# 创建一个namespace,名字是dev
[root@master ~]# kubectl create namespace dev

# 获取namespace
[root@master ~]# kubectl get ns

# 在此namespace下创建并运行一个nginx的Pod
[root@master ~]# kubectl run nginx --image=nginx:1.17.1 -n dev

注:这里的nginx是pod的名字
注 -n 指定创建pod在指定的命名空间内,不指定的话默认是default

# 查看新创建的pod
[root@master ~]# kubectl get pod
[root@master ~]# kubectl get pod -n dev

注 -n 指定查看的命名空间下的pod,不指定的话默认是default

#查看详细pod详细信息
[root@master ~]# kubectl describe pod nginx -n dev

# 删除指定的pod
[root@master ~]# kubectl delete pod nginx -n dev

注:不指定命名空间,则默认删除default下的pod

# 删除指定的namespace
[root@master ~]# kubectl delete ns dev

命令式对象配置

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

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

apiVersion: v1
kind: Namespace
metadata:
  name: dev
---
apiVersion: v1
kind: Pod
metadata:
  name: nginxpod
  namespace: dev
spec:
  containers:
  - name: nginx-containers
    image: nginx:latest

注:上述yaml内容为:创建名字为dev的命名空间,在该命名空间下创建一个名字为nginxpod的pod,使用的镜像是nginx:latest

 

2)执行create命令,创建资源:
[root@master ~]# kubectl create -f nginxpod.yaml
此时发现创建了两个资源对象,分别是namespace和pod

3)执行get命令,查看资源:
[root@master ~]# kubectl get -f nginxpod.yaml
这样就显示了两个资源对象的信息

4)执行delete命令,删除资源:
[root@master ~]# kubectl delete -f nginxpod.yaml
此时发现两个资源对象被删除了

总结:

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

声明式对象配置

声明式对象配置跟命令式对象配置很相似,但是它只有一个命令apply。

# 首先执行一次kubectl apply -f yaml文件,发现创建了资源
[root@master ~]# kubectl apply -f nginxpod.yaml

查看
[root@master ~]# kubectl get ns dev
[root@master ~]# kubectl get pods -n dev

# 再次执行一次kubectl apply -f yaml文件,发现说资源没有变动
[root@master ~]# kubectl apply -f nginxpod.yaml

若修改镜像版本后再执行
[root@master ~]# vim nginxpod.yaml
[root@master ~]# kubectl apply -f nginxpod.yaml

查看详细信息
[root@master ~]# kubectl describe pod nginxpod -n dev

 

总结:

其实声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)

使用apply操作资源:

如果资源不存在,就创建,相当于 kubectl create

如果资源已存在,就更新,相当于 kubectl patch

扩展:kubectl可以在node节点上运行吗 ?

kubectl的运行是需要进行配置的,它的配置文件是$HOME/.kube($HOME表示家目录),如果想要在node节点运行此命令,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:

[root@master ~]# scp -r ~/.kube node1:~/

[root@node1 ~]# kubectl get nodes

注:若没做hosts映射,则需要填写对应节点的ip

使用推荐: 三种方式应该怎么用 ?

创建/更新资源 使用声明式对象配置 kubectl apply -f XXX.yaml

删除资源 使用命令式对象配置 kubectl delete -f XXX.yaml

查询资源 使用命令式对象管理 kubectl get(describe) 资源名称

参考

黑马B站k8s课程https://www.bilibili.com/video/BV1Qv41167ck/
https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md
https://www.yuque.com/fairy-era/yg511q/xyqxge

 

posted @ 2022-11-04 20:28  gys001  阅读(359)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3