Kubernetes基础命令

Kubernetes 提供 kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。

这个工具叫做 kubectl

针对配置信息,kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。 你可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig

参数来指定其它$HOME/.kube 文件。

一、kubectl语法

使用以下语法从终端窗口运行 kubectl 命令:

kubectl [command] [TYPE] [NAME] [flags]

其中 commandTYPENAME 和 flags 分别是:

  • command:指定要对一个或多个资源执行的操作,例如 creategetdescribedelete

  • TYPE:指定资源类型。资源类型不区分大小写, 可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果:

kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
  • NAME:指定资源的名称。名称区分大小写。 如果省略名称,则显示所有资源的详细信息。例如:kubectl get pods
  • 在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件:

  • 要按类型和名称指定资源:

  • 要对所有类型相同的资源进行分组,请执行以下操作:TYPE1 name1 name2 name<#>
    例子:

    kubectl get pod example-pod1 example-pod2
  • 分别指定多个资源类型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>
    例子:

    kubectl get pod/example-pod1 replicationcontroller/example-rc1
  • 用一个或多个文件指定资源:-f file1 -f file2 -f file<#>

  • flags: 指定可选的参数。例如,可以使用 -s 或 --server 参数指定 Kubernetes API 服务器的地址和端口。

1.kubectl命令和选项:

查看集群信息

kubectl cluster-info

 获取资源

kubectl get <resource>:列出指定资源的列表(如 pods, services, deployments)
#例子
kubectl get pods       获取所有 Pods
kubectl get services       获取所有 Services

-n--namespace  指定要查询的命名空间。
-A--all-namespaces  显示所有命名空间中的 Pod。
-o--output  指定输出格式,可以是 widejsonyamlname 等。
--field-selector  根据特定字段选择 Pod,例如 Pod 的状态。
-l--selector  根据标签选择 Pod。
--watch  实时监视 Pod 的变化。

 描述资源

kubectl describe <resource> <name>:显示资源的详细信息(如 kubectl describe pod my-pod)

 创建和应用配置

kubectl create -f <file>:根据配置文件创建资源。
kubectl apply -f <file>:应用或更新资源配置。
vim test.yaml

apiVersion: v1
kind : Pod
metadata:
  name: alpine
spec:
  containers:
    - name: alpine
      image: harbor.hiuiu.com/basic_image/centos7_filebeat_nginx:2408.u
      imagePullPolicy: Never
      ports:
      - containerPort: 8000
      command: ["/bin/sh"]
      args: ["-c", "while true; do echo hello; sleep 10; done"]


##imagePullPolicy有三个取值:

#Always 每次都下载最新镜像
#Never 不会尝试获取镜像,如果镜像存在本地,kubelet尝试启动容器;否则启动失败
#IfNotPresent 只有当镜像在本地不存在时才会拉取

#如果省略
imagePullPolicy字段:
1.且镜像标签为latest或没有设置标签,自动设置为Always
2.且镜像指定了标签,自动设置为IfNotPresent
kubectl apply -f test.yaml      #根据根yaml文件应用或更新资源配置
kubectl delete -f test.yaml      #删除由yaml文件应用生成的资源配置

删除资源

kubectl delete <resource> <name>:删除指定资源(如 kubectl delete pod my-pod)

 执行命令

kubectl exec -it <pod> -- <command>:在 Pod 中执行命令(如 kubectl exec -it my-pod -- /bin/bash)
#例子
kubectl exec nginx11 -it bash

 查看日志

kubectl logs <pod>:查看指定 Pod 的日志

 查看命令说明

kubectl explain pod

 二、管理命名空间

1.基本命令

kubectl get namespace     #列出居群环境所有namespace

kubectl create ns test2      #创建一个namespace

kubectl config set-context --current --namespace=test2      #切换当前namespace

kubectl config view --minify --output 'jsonpath={..namespace}'      #显示当前namespace

kubectl describe namespace test2      #查看namespace详细信息

kubectl delete namespace test2      #删除namespace同时删除里面的pod

2.使用YAML 文件定义命名空间

vim ns.yaml

apiVersion: v1 kind: Namespace metadata: name: my
-namespace

kubectl apply -f namespace.yaml #执行yaml文件

资源限制

对已有的namespace进行资源限制,在做了资源限制的ns下创建pod时,pod也需要资源限制

#对ns test3资源限制
root@hx4:/data# vim nspei.yaml apiVersion: v1 kind: ResourceQuota metadata: name: example-quota namespace: test3 spec: hard: requests.cpu: "2" requests.memory: "1Gi" limits.cpu: "2" limits.memory: "4Gi" pods: "10"

#对pod资源限制
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: mycontainer
        image: harbor.hiuiu.com/nginx/nginx:1.21.5
        imagePullPolicy: Never
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"

 

posted @ 2024-08-20 17:43  hx_ky36  阅读(2)  评论(0编辑  收藏  举报