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

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

kubectl管理命令

是用于控制k8s集群的命令行工具

语法格式:

shell 复制代码
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 创建容器

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



POD原理


pod的生命周期

无限运行周期 有限运行周期

-- 选项终止符号

rm -rf -- -f

删除得从上往下删除

通过资源文件的创建的容器 也可以通过资源文件的方式删除

k8s资源对象管理

资源文件

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

资源对象文件有什么用?

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

使用资源文件管理对象

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

Pod资源文件

deploy资源文件




集群调度的规则

扩容与缩减

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

集群更新与回滚

shell 复制代码
[root@master config]# kubectl rollout history deployment myapache
shell 复制代码
[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
shell 复制代码
# 回滚版本到1
[root@master ~]# kubectl rollout undo deployment myapache --to-revision=1
[root@master ~]# curl http://10.244.3.6
this is apache

集群调度

容器创建是随机的,如何选择固定的宿主机?

使用nodeName标签根据节点名称选择宿主机

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

如何使用一类宿主机?

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


打标签的格式

删除标签

shell 复制代码
kubectl label pod myapache-7b689bf8f-5sczz key-

基于标签的调度

shell 复制代码
[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- # 标签还原
~~~![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/02582d06f48b44a1a885e8663626ec14.png#pic_center)
相关推荐
烟雨书信5 分钟前
Docker文件操作、数据卷、挂载
运维·docker·容器
IT成长日记9 分钟前
【Docker基础】Docker数据卷管理:docker volume prune及其参数详解
运维·docker·容器·volume·prune
这儿有一堆花15 分钟前
Docker编译环境搭建与开发实战指南
运维·docker·容器
LuckyLay15 分钟前
Compose 高级用法详解——AI教你学Docker
运维·docker·容器
Uluoyu23 分钟前
redisSearch docker安装
运维·redis·docker·容器
IT成长日记5 小时前
【Docker基础】Docker数据持久化与卷(Volume)介绍
运维·docker·容器·数据持久化·volume·
热爱生活的猴子5 小时前
阿里云服务器正确配置 Docker 国内镜像的方法
服务器·阿里云·docker
物联网老王7 小时前
Ubuntu Linux Cursor 安装与使用一
linux·运维·ubuntu
FrankYoou9 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
一位摩羯座DBA9 小时前
Redhat&Centos挂载镜像
linux·运维·centos