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)
相关推荐
溟洵19 分钟前
MySQl基础----Linux下数据库的密码和数据库的存储引擎(内附 实操图和手绘图 简单易懂)
linux·数据库·mysql
yfs102422 分钟前
Linux通过端口号找到程序启动路径(Ubuntu20)
linux·运维·服务器
MonkeyKing_sunyuhua25 分钟前
sudo docker ps才能查看,docker ps不能查看问题
docker·容器·eureka
有梦想的咕噜25 分钟前
在 Ubuntu 上安装 `.deb` 软件包有几种方法
linux·运维·ubuntu
小龙在山东27 分钟前
使用Docker快速部署FastAPI Web应用
docker·容器·fastapi
苏格拉真没有底28 分钟前
docker配置代理解决不能拉镜像问题
运维·docker·容器
zjj58730 分钟前
tartanvo ubuntu 20.04部署
linux·运维·ubuntu
Xam_d_LM38 分钟前
【Linux】获得同一子网下当前在线设备IP/Latency/MAC 通过nmap指定CIDR扫描当前在线设备
linux·运维·服务器
一颗星星辰1 小时前
数据结构 | 题目练习第三章 | 有效的括号 | 用队列实现栈
java·linux·数据结构
黄小耶@1 小时前
Hadoop(环境搭建篇)
linux·运维·服务器