首页 > 其他分享 >k8s资源管理及常用命令介绍

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

时间:2022-11-04 20:48:28浏览次数:59  
标签:kubectl kubernetes yaml master 常用命令 pod k8s root 资源管理

资源管理

资源管理介绍

在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

 

标签:kubectl,kubernetes,yaml,master,常用命令,pod,k8s,root,资源管理
From: https://www.cnblogs.com/gys001/p/16858972.html

相关文章

  • 基于kubeadm和underlay部署K8S
     1、环境准备 #所有节点执行: ​ #修改主机名 hostnamectlset-hostnamek8s-master-101 ​ #配置hosts [root@k8s-master-101~]#cat>>/etc/hosts<<EOF......
  • K8S中跨命名空间访问
    查看集群解析kubectlrun-it--image=busybox:1.28.4--rm--restart=Neversh以上截图可以得知集群域名为默认的:cluster.localpod跨命名空间访问service方式:$(servi......
  • Linux常用命令+命令进阶
    一、Linux命令进阶1.查看端口是否占用​​netstat-ntulp|grepPORT_id​​2.curl命令​​​curlurl网址​​​:返回该网址源码更多介绍请看:​​​curl网站开发指南......
  • 在k8s(kubernetes) 上安装 ingress V1.1.0
    Ingress公开了从集群外部到集群内服务的HTTP和HTTPS路由。流量路由由Ingress资源上定义的规则控制。下面是一个将所有流量都发送到同一Service的简单Ingress示例......
  • 在 k8s(kubernetes)中使用 Loki 进行日志监控
    安装helm环境[root@hello~/yaml]#[root@hello~/yaml]#curlhttps://baltocdn.com/helm/signing.asc|sudoapt-keyadd-[root@hello~/yaml]#sudoapt-getinstallap......
  • 在Kubernetes(k8s)中使用GPU
    介绍Kubernetes支持对节点上的AMD和NVIDIAGPU(图形处理单元)进行管理,目前处于实验状态。修改docker配置文件root@hello:~#cat/etc/docker/daemon.json{"default-r......
  • Kubernetes(k8s)集群安装JupyterHub以及Lab
    背景JupyterHub为用户组带来了笔记本的强大功能。它使用户能够访问计算环境和资源,而不会给用户带来安装和维护任务的负担。用户——包括学生、研究人员和数据科学家——可......
  • kubernetes(k8s) 存储动态挂载
    使用nfs文件系统实现kubernetes存储动态挂载1.安装服务端和客户端root@hello:~#aptinstallnfs-kernel-servernfs-common其中nfs-kernel-server为服务端,nfs-comm......
  • kubernetes(k8s)安装命令行自动补全功能
    Ubuntu下安装命令root@master1:~#aptinstall-ybash-completionReadingpackagelists...DoneBuildingdependencytreeReadingstateinformation...Donebash-c......
  • kubernetes(k8s)中部署dashboard可视化面板
    Web界面(Dashboard)Dashboard是基于网页的Kubernetes用户界面。你可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。你......