Kubernetes基础命令
Kubernetes 提供 kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。
这个工具叫做 kubectl
。
针对配置信息,kubectl
在 $HOME/.kube
目录中查找一个名为 config
的配置文件。 你可以通过设置 KUBECONFIG
环境变量或设置 --kubeconfig
参数来指定其它$HOME/.kube
文件。
一、kubectl语法
使用以下语法从终端窗口运行 kubectl
命令:
kubectl [command] [TYPE] [NAME] [flags]
其中 command
、TYPE
、NAME
和 flags
分别是:
-
command
:指定要对一个或多个资源执行的操作,例如create
、get
、describe
、delete
。 -
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
指定输出格式,可以是 wide
、json
、yaml
、name
等。
--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"