kubectl命令

1.管理集群

1.1 kubectl命令

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

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

 1.2 kubectl基本命令

# 查看帮助
kubectl help
# 客户端版本信息
kubectl version 
# 查看集群状态信息
kubectl cluster-info
# 查看资源对象类型
kubectl api-resources
# 查看节点
kubectl get node -o wide
# 查看容器资源
kubectl get pod -o wide
# 查看资源名称
kubectl get deployment
# 创建pod容器
kubectl run myweb --image=harbor:443/library/image:httpd
# 创建交互时pod容器
kubectl run mypod -it --image=harbor:443/library/image:yum
# 查看命名空间
kubectl get namespace
# 查看指定命名空间的pod
kubectl -n kube-system get pod
# 查看详细信息
kubectl describe pod myweb
# 查看pod日志信息
kubectl logs myweb

 1.3 kubectl节点命令

# 查看node的标签
kubectl get nodes node1 --show-labels 
# 打标签
kubectl label node1 disk=ssd
# 删除标签
kubectl label nodes node1 disk-
# 动态直接给容器扩容
kubectl scale deployment my-deploy --replicas=3

2.管理pod

 2.1 pod与控制器

 控制器:控制器是k8s内置的管理工具,可以帮助用户实现Pod的自动部署,自维护,扩容,滚动更新等功能的自动化程序

# 创建一个带控制器的pod资源
kubectl create deployment myapache --images=harbor:443/library/image:httpd
# 链接控制器  --:是shell指令的扩展终止符,后面的内容被认为是指令
kubectl exec -it myapache-67bdb5889-wzfzw -- /bin/bash
# 查看顶层控制器,deployments可以为集群提供升级和滚动
kubectl get deployments.apps
# 查看二级控制器,replicasets管理pod,给定参数会自动扩容节点,检测pod状态,发现pod坏掉会重新生成
kubectl get replicasets.apps
# 查看底层pod
kubectl get pod
# 删除要从顶层资源删起
kubectl delete deployments.app myapache
kubectl delete pod myweb

 2.2 DaemonSet控制器

  DaemonSet:每个机器都要启动运行的pod,确保全部或一些Node上运行pod副本

  删除DaemonSet,会删除所有它创建的pod副本,典型应用:ceph节点、监控节点、filebeat日志收集等

  系统服务kube-proxy就是这种类型

 2.3 Job控制器

  Job控制器可以理解为定时任务,单任务控制器

 CronJob重复多次任务控制器

# cronjob.yaml
---
apiVersion: batch/v1              #版本
kind: CronJob                     #资源类型
metadata:
 name: cronjob-pi                 #资源对象名称
spec:
  schedule: "*/1 * * * *"         #定义周期时间,分时日月周
  jobTemplate:                    #引用job模板
    spec:
      template:
        spec:
          containers:
          - name: pi
            image: harbor:443/library/image:yum
            command: ["/bin/bash"]
            args:
            - -c
            - |
              echo "Hello World."
          restartPolicy: OnFailure
          
     

 2.4 污点标签

  PreferNoSchedule尽量不调度、 NoSchedule不会被调度、NoExecute驱逐污点

  驱逐污点使用:node1机器出现故障,可以使用驱逐污点,让node1的容器迁移到其它节点上,清除污点,已调度走的容器不会再回来了

# 查看所有污点标签
kubectl describe nodes | grep Taints
# 设置污点
kubectl taint node node1 k1=v1:NoSchedule
# 删除污点
kubectl taint node node1 k1-

3.yaml资源对象文件

 3.1 资源对象文件定义

 资源对象文件:描述和定义kubernetes资源的文件,包含资源的配置信息,可以创建、删除、管理资源对象

# 定义一个简单的资源对象文件 pod.yaml
---
apiVersion: v1                                #版本
kind: Pod                                     #资源类型
metadata:                                     #元数据
  name: my-pod                                #资源的名字
spec:                                         #具体的资源详细信息
  containers:                                 #容器配置
  - name: my-pod                              #容器名字
    image: harbor:443/library/image:httpd     #镜像地址
    ports:                                    #定义服务端口
    - protocol: TCP                           #使用的协议
      containerPort: 80                       #容器端口

 

# 启动资源
kubectl apply -f pod.yaml
# 查看
kubectl  get  pod
# 关闭资源
kubectl delete -f pod.yaml
# 查询一个资源对象文件(如果不会写,可以找到一个已经存在的资源,查看)
kubectl get deployment.apps my-deploy -o yaml
kubectl get deployment.apps my-deploy -o wide
kubectl get deployment.apps my-deploy -o json
# 获取资源对象文件模板
# pod模板案例
kubectl run pod --image=harbor:443/library/image:yum --dry-run=client -o yaml
# deployment模板案例
kubectl create deployment test-deploy --image=harbor:443/library/image:yum --dry-run=client -o yaml

4.ConfigMap映射

# 创建configMap
kubectl create configmap nginx-conf  --from-file=nginx.conf 
# 查看configMap
kubectl get configmaps
# yaml文件内配置
 configMap: 
    name: nginx-conf #ConfigMap名字

 

posted @ 2024-01-10 20:30  卷叶小树  阅读(181)  评论(0编辑  收藏  举报