07:Kubectl 命令详解|K8S资源对象管理|K8S集群管理(重难点)

时间:2024-03-02 07:17:40

Kubectl 命令详解|K8S资源对象管理|K8S集群管理

  • kubectl管理命令
    • kubectl get 查询资源
    • 常用的排错命令
    • kubectl run 创建容器
  • POD原理
    • pod的生命周期
  • k8s资源对象管理
    • 资源文件
    • 使用资源文件管理对象
      • Pod资源文件
      • deploy资源文件
  • 集群调度的规则
    • 扩容与缩减
    • 集群更新与回滚
    • 集群调度

kubectl管理命令

在这里插入图片描述

是用于控制k8s集群的命令行工具
语法格式:

kubectl [command] [TYPE] [NAME] [flags]
	command : 子命令 如create get describe delete 
	TYPE: 资源类型,可以表示为单数、复数或缩写形式
	name: 资源的名称,如果省略,则显示所有资源信息
	flags: 指定可选标志 或附加的参数

kubectl get 查询资源

  • get nodes 查询节点状态
  • get deployment 查询资源名称
  • get componentstatuses 组键的状态
    在这里插入图片描述
    在这里插入图片描述
    这个名称空间相当于每个盘 pod相当于目录
    在这里插入图片描述
    在这里插入图片描述

常用的排错命令

  • kubectl describe 资源类型 资源名称
  • 查看资源信息信息
    在这里插入图片描述
  • kubectl logs 容器名称
    • 查看console 终端的输出信息
    • 为空是正常现象 表示没有日志输出
      在这里插入图片描述
      在这里插入图片描述

kubectl run 创建容器

kubectl run 资源名称 -i -t --image=私有仓库镜像名称:标签

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

POD原理

在这里插入图片描述
在这里插入图片描述

pod的生命周期

无限运行周期 有限运行周期
在这里插入图片描述
在这里插入图片描述

– 选项终止符号
rm -rf – -f

删除得从上往下删除
在这里插入图片描述

通过资源文件的创建的容器 也可以通过资源文件的方式删除
在这里插入图片描述
在这里插入图片描述

k8s资源对象管理

资源文件

k8s通过RC/RS管理POD,在RC中定义了如何启动POD,如何运行,启用几副本等功能,如果我们创建的文件,在其中使用yaml的语法格式描述了上面的信息,这个文件就是我们的资源对象文件
资源对象文件有什么用?

  • 可以创建、删除、管理资源对象
  • 很多高级的复杂的功能靠简单的命令方式无法实现,这些都需要使用资源文件描述

使用资源文件管理对象

  • create 创建资源对象
  • apply 声明更新资源对象 可以多次执行
  • delete 删除资源对象
kubectl (apply|create|delete) -f 资源文件

Pod资源文件

在这里插入图片描述

deploy资源文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

集群调度的规则

扩容与缩减

[root@master ~]# kubectl get deployments.apps
[root@master ~]# kubectl scale deployment myapache --replicas=3 # 增加3个myapache
[root@master ~]# kubectl get deployments.apps

集群更新与回滚

在这里插入图片描述

[root@master config]# kubectl rollout history deployment myapache

在这里插入图片描述

[root@master ~]# curl http://10.244.3.5
this is apache
[root@master ~]# kubectl edit deployments.apps myapache 修改配置文件镜像为nginx
[root@master ~]# curl http://10.244.2.6
this is nginx 
[root@master ~]# kubectl rollout history deployment myapache

在这里插入图片描述

# 回滚版本到1
[root@master ~]# kubectl rollout undo deployment myapache --to-revision=1
[root@master ~]# curl http://10.244.3.6
this is apache

集群调度

容器创建是随机的,如何选择固定的宿主机?
使用nodeName标签根据节点名称选择宿主机

spec:  # POD.SPEC标签
	nodeName:node-0001 	# 直接指定node主机名称 ,简单粗暴
# 注意 如果添加了选择标签 但无法使用该主机 pod将一直处于Pending状态 

如何使用一类宿主机?

  • 需要提前为目标主机打上特定的标签(可以是多台)
  • 在资源文件中根据标签选择宿主机(更加灵活)
spec: # POD.SPEC标签
	nodeSelector: # 标签选择
	 disktype:ssd # node 表情

在这里插入图片描述
在这里插入图片描述
打标签的格式
在这里插入图片描述
删除标签

kubectl label pod myapache-7b689bf8f-5sczz key-

基于标签的调度

[root@master ~]# kubectl label nodes node-0002 node-0003 disktype=ssd
node/node-0002 labeled
node/node-0003 labeled
[root@master ~]# vim myhttpd.yaml 
---
kind: Pod
apiVersion: v1
metadata:
  name: myhttpd
  labels:
    app: apache
spec:
  terminationGracePeriodSeconds: 0
  restartPolicy: Always
  nodeSelector: # 修改后的
    disktype: ssd # 修改后的
  containers:
  - name: apache
    image: myos:httpd
    imagePullPolicy: IfNotPresent
    ports:
    - protocol: TCP
      containerPort: 80

[root@master ~]# kubectl get pods -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP            NODE
myhttpd   1/1     Running   0          29m   10.244.3.80   node-0003
web1      1/1     Running   0          10s   10.244.2.60   node-0002
web2      1/1     Running   0          10s   10.244.3.82   node-0003
web3      1/1     Running   0          10s   10.244.2.61   node-0002
web4      1/1     Running   0          10s   10.244.2.62   node-0002
web5      1/1     Running   0          10s   10.244.3.81   node-0003
[root@master ~]# kubectl label nodes node-0002 node-0003 disktype- # 标签还原

在这里插入图片描述