首页 > 其他分享 >kubectl命令行介绍

kubectl命令行介绍

时间:2023-08-03 16:03:35浏览次数:36  
标签:master1 kubectl io 介绍 nginx 命令行 pod k8s

一.k8s概念:

从节点的角色来看一个master一个node

kubectl命令行介绍_kubectl

1.1Master节点

master是k8s的控制节点叫Control Plane或者叫控制平面,在生产环境中不建议部署集群核心组件外的任何Pod,就是master节点上不允许Pod的,master只负责群集的调度

正常情况master有三个角色

APIServer:APIServer是集群的管理中枢,或者集群的入口,都是APIServer
集群上所有的关于资源的创建配置清单都是先和APIServer通信然后写到ETC的里面
Scheduler:Schedu的Pod的调度中心,主要是通过调度算法将Pod分配到最佳的节点
Controller Manager:Controller Manager是集群状态管理器
ETCD:一般都是部署在集群外面

1.2Node节点

kubelet:负责与master通信协作,管理该节点上的Pod
kube-Proxy:负责各Pod之间的通信和负载均衡.
Runtime:容器运行时,负责对容器的管理.1.26用的是containerd,因为最终他是在容器中运行,咋得也需要一个容器引擎

二.插件

除了主要的组件还有插件最主要的是两个插件一个是coredns

2.1DNS(CoreDns)

coredns是负责整个k8s集群里面的各种负载之间的服务发现的,在这里靠dns起到一个server的主机地址和server的ip一个对应关系,不管这些,还有一些比较特殊的service他是直接pod的ip地址和主机的对应关系
说白了coredns就是做解析的
不需要我们人为的添加任何配置,他会根据你创建的资源对象给你自动的添加做服务发现的.
kubectl get pods -n kube-system

kubectl命令行介绍_kubernetes_02

2.2网络插件

网络插件才是真正负责:

1跨主机通信
2给我们每个容器都分配个ip地址
kubectl get pods -n kube-system -owide
#长格式显示

kubectl命令行介绍_k8s_03


#上图显示的ip172.17.8.*
#这个ip和主机的ip
#他所使用的网络模型是一种特殊的网络,这个pod就和之前学docker的时候网络模型,三种网络模型一个桥接,一个host,一个none
#其中host就是容器的网络和主机网络是同一个网络,这里面通过显示ip如果pod ip显示和你的主机节点网络ip是相同的说明他也是类似的网络模型
#k8s里面有一种网络模型叫hostNetwork
#就是你pod网络事实上使用的主机网络

除了网络插件还有其他插件,其他插件都是可选择的

2.3.Web界面(仪表盘)

Dashboard

一个ui界面

kubectl get service -n kubernetes-dashboard
#查看dashboard的端口号
#然后浏览器VIP加端口号注意是https协议

kubectl命令行介绍_kubectl_04


#获取密钥
kubectl describe secrets -n kube-system $(kubectl get secrets -n kube-system | grep admin-user | awk '{print $1}')
#得到密钥粘贴到dashboard里面

2.4.容器资源监控

Metrics

容器资源监控将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供浏览这些数据的界面

2.5集群层面日志

集群层面日志机制负责将容器的日志数据保存到一个集中的日志存储中,这些集中的日志存储提供搜索和浏览接口

kubectl命令行

我们需要整个命令行去不管是查看修改删除各种各种的资源对象的时候都需要通过这个命令行来往成的

在k8s里面有个概念:

除了说容器运行在pod里面是最小的控制单元以外,在k8s集群上有个叫隔离
name space 名称空间 是个隔离空间简写为ns
他逻辑上是个逻辑隔离的一个概念
名称空间就相当于学校有不同的洗,每个系各种班级
可以将class(班级)理解成一个名称空间
比如你找你得去问清楚年纪专业什么系的什么班的,
就像寄送快递一样各种各样的层级关系,那个省市县街道
我们在创建各种对象的时候,首先要把这个对象指定名称空间概念
这个名称空间就可以理解成一个组织,或者一个组
在生产上最初的时候每一个团队都会建立一个名称空间,这个团队的所有的业务都运行在这个名称空间里面,他是在逻辑上隔离的,不是物理隔离
就比如创建一个pod在 在不同的名称空间里面,可以创建名称相同的pod
在同一个名称空间里面就不行,就像同一个目录里面不能创建文件名相同的文件,但是不同目录就可以
kubectl get ns
kubectl get namespace
#默认给我们生成了4个名称空间,下图前四个,最后一个kubernetes-dashboard是自己装的
#一个叫default  #默认名称空间
#kube-node-lease 这是node节点的这里面也是空的
#kube-public 公共的 这个也是空的 
#kube-system k8s系统级别的pod  里面是我们最初安装的各种各样的组件,不管是网络的 coredns的 etcd的 proxy的 contailler的 scheduler的 还有metrics的 这些都是集群系统的pod 他们都运行在kube-system名称空间里面
kubectl get pods -n kube-system
#通过-n 参数指定名称空间

#最后这个 kubernetes-dashboard 这个是我们安装dashboard的自动创建的名称空间,dashboard的资源都是运行在这个名称空间里面的
#service也是分名称空间的
kubectl get service -n kubernetes-dashboard

kubectl命令行介绍_k8s_05

在同一个名称空间里面namespace 不能创建名称相同的各种各样的资源对象
百分之90的nginx里百分之90的资源对象都是名称空间级别的,除了名称空间级别就是,集群级别的,下面这个命令这是查节点,节点是集群级别的
k8s从级别上来说有两个一个叫集群级别一个叫名称空间NameSpace级别的概念
#百分之90以上的资源对象都是名称空间级别的集群级别的很少
kubectl get nodes
#查询集群级别的

kubectl命令行介绍_k8s_06

以后去查各种各样的pod或者资源对象的时候,都要跟一个名称空间

kubectl get pods
kubectl get pods -n defalut
#如果像这样不带任何名称空间他会去default这个名称空间里面去查

官方给我们提供了帮助文档

https://kubernetes.io/zh-cn/docs/reference/kubectl/

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

get

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get

kubectl get pod
#不加-n 默认显示defalut名称空间内容

-o : wide yaml json

kubectl get pod -n kube-system -o wide
#-o是输出的意思ioput 输出一种特定的格式 wide详细显示

kubectl命令行介绍_json_07


[root@k8s-master1 ~]# kubectl get pods kube-proxy-pnqr8 -n kube-system
NAME               READY   STATUS    RESTARTS      AGE
kube-proxy-pnqr8   1/1     Running   2 (13m ago)   13h
#-o yaml  他会把你的yaml格式显示出来
[root@k8s-master1 ~]# kubectl get pods kube-proxy-pnqr8 -n kube-system -o yaml
apiVersion: v1
kind: Pod
metadata:
  annotations:
    date: "1690980570"
  creationTimestamp: "2023-08-02T12:49:30Z"
  generateName: kube-proxy-
  labels:
    controller-revision-hash: 865ccbc4bc
    k8s-app: kube-proxy
    pod-template-generation: "2"
  name: kube-proxy-pnqr8
#下面省略

#-o json  他会把你的json格式显示出来
[root@k8s-master1 ~]# kubectl get pods kube-proxy-pnqr8 -n kube-system -o json
{
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {
        "annotations": {
            "date": "1690980570"
        },
        "creationTimestamp": "2023-08-02T12:49:30Z",
        "generateName": "kube-proxy-",
        "labels": {
            "controller-revision-hash": "865ccbc4bc",
            "k8s-app": "kube-proxy",
            "pod-template-generation": "2"
        },
        "name": "kube-proxy-pnqr8",
#下面省略
# get 命令的基本输出
kubectl get services                          # 列出当前命名空间下的所有 services
kubectl get pods --all-namespaces             # 列出所有命名空间下的全部的 Pods
kubectl get pods -o wide                      # 列出当前命名空间下的全部 Pods,并显示更详细的信息
kubectl get deployment my-dep                 # 列出某个特定的 Deployment
kubectl get pods                              # 列出当前命名空间下的全部 Pods
kubectl get pod my-pod -o yaml                # 获取一个 pod 的 YAML
#以 ps 输出格式列出具有指定 NAME 的单个复制控制器
kubectl get replicationcontroller web
#获取rc对象

#在“apps”API 组的“v1”版本中以 JSON 输出格式列出部署
kubectl get deployments.v1.apps -o json
#获取deployments对象

#以 JSON 输出格式列出由“pod.yaml”中指定的类型和名称标识的 pod
kubectl get -f pod.yaml -o json
#通过文件获取

#使用 kustomization.yaml 列出目录中的资源 - 例如 dir/kustomization.yaml
kubectl get -k dir/
#通过目录获取

#只返回指定pod的phase值
kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}
#通过模板获取

#以 ps 输出格式列出所有复制控制器和服务
kubectl get rc,services
#一次性可以获取两个  两种资源对象

create

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#create

基于一个文件来去创建resource(资源对象)这个文件通常是个json或者yaml,以下资源都可以通过文件创建

#create
clusterrole
clusterrolebinding
configmap
cronjob
deployment
ingress
job
namespace
poddisruptionbudget
priorityclass
quota
role
rolebinding
secret
secret docker-registry
secret generic
secret tls
service
service clusterip
service externalname
service loadbalancer
service nodeport
serviceaccount
#使用 pod.json 中的数据创建 pod
kubectl create -f ./pod.json

#根据传递到 stdin 的 JSON 创建一个 pod
cat pod.json | kubectl create -f -

#以 JSON 格式编辑 docker-registry.yaml 中的数据,然后使用编辑后的数据创建资源
kubectl create -f docker-registry.yaml --edit -o json

run

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#run

通过命令行来启动一个pod

#启动 nginx Pod
kubectl run nginx --image=nginx

#启动 hazelcast pod 并让容器暴露端口 5701
kubectl run hazelcast --image=hazelcast/hazelcast --port=5701

#启动 hazelcast pod 并在容器中设置环境变量“DNS_DOMAIN=cluster”和“POD_NAMESPACE=default”
kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
#指定环境变量--env 

#启动 hazelcast pod 并在容器中设置标签“app=hazelcast”和“env=prod”
kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
#主机默认都有标签,每个节点都对应的标签
[root@k8s-master1 ~]# kubectl get nodes --show-labels

kubectl命令行介绍_名称空间_08

k8s-master1              Ready    control-plane   14h   v1.26.3   
beta.kubernetes.io/arch=amd64(平台),
beta.kubernetes.io/os=linux(操作系统),
kubernetes.io/arch=amd64,kubernetes.io/hostname.io/os(host主机名称)=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=
#试运行;打印相应的API对象而不创建它们
kubectl run nginx --image=nginx --dry-run=client
#这个事测试这个有没有故障有没有问题  并不是真正的创建
#创建一个
[root@k8s-master1 ~]# kubectl run nginx-2 --image=nginx:1.22.1 --dry-run=client
pod/nginx-2 created (dry run)
#但是查不到
[root@k8s-master1 ~]# kubectl get pods
NAME      READY   STATUS    RESTARTS   AGE
nginx-1   1/1     Running   0          38m
[root@k8s-master1 ~]# kubectl run nginx-1 --image=nginx:1.22.1
pod/nginx-1 created
#创建一个名为nginx-1的pod 镜像名字为nginx:1.22.1
#如果创建的时候没有跟 -n 名称空间这个参数,那么默认创建到default里面
[root@k8s-master1 ~]# kubectl get pods -n default
NAME      READY   STATUS    RESTARTS   AGE
nginx-1   1/1     Running   0          83s
#创建个名称空间
kubectl create ns linux39
kubectl run nginx-1 --image=nginx:1.22.1 -n linux39
#创建名为nginx-1的pod 放到linux39名称空间里面

expose

把某个服务的端口号给你映射出去,这个映射是通过service的资源对象映射出去

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#expose

为复制的 nginx 创建一个服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器
kubectl expose rc nginx --port=80 --target-port=8000
#操作一个,我们将刚才创建的nginx-1 给映射出去
[root@k8s-master1 ~]# kubectl expose pod nginx-1 --port=80
service/nginx-1 exposed
[root@k8s-master1 ~]# kubectl get service 
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   14h
nginx-1      ClusterIP   10.111.231.202   <none>        80/TCP    4m59s
#这就相当于把nginx-1容器
#查看以下nginx-1 pod
[root@k8s-master1 ~]# kubectl get pod -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP              NODE                   NOMINATED NODE   READINESS GATES
nginx-1   1/1     Running   0          47m   192.17.65.195   k8s-node3.guoguo.com   <none>           
[root@k8s-master1 ~]# curl 192.17.65.195 &> /dev/null && echo $?
0
#是可以访问的,在当前集群任何一个节点都可以访问这个pod
#[root@k8s-master1 ~]# kubectl expose pod nginx-1 --port=80
#刚才这条命令的意思是 创建了一个service,基于这个pod创建service  ,他会把你pod名称会生成和pod名称相同的service资源对象叫nginx-1 他也有个ip地址 10.111.231.202 #kubectl get service  可以查到 如果指定了名称空间需要加-n
[root@k8s-master1 ~]# curl 10.111.231.202 &> /dev/null && echo $?
0
#他也是可以访问到的
#service在pod节点之上加了 一层service 资源对象,事实上我们访问service 的时候 service会跳转到pod,可以理解成反向代理加负载均衡的功能,如果有多个相同的pod,它可以进行调度,起到一个负载均衡的效果

kubectl命令行介绍_k8s_09

delete

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#delete

删除 删除各种各样的资源对象

#使用 pod.json 中指定的类型和名称删除 pod
kubectl delete -f ./pod.json

#从包含 kustomization.yaml 的目录中删除资源 - 例如 dir/kustomization.yaml
kubectl delete -k dir

#根据传递到 stdin 的 JSON 中的类型和名称删除 pod
cat pod.json | kubectl delete -f -

#删除具有相同名称“baz”和“foo”的 Pod 和服务
kubectl delete pod,service baz foo

#删除标签 name=myLabel 的 Pod 和服务
kubectl delete pods,services -l name=myLabel

#以最小延迟删除 Pod
kubectl delete pod foo --now

#强制删除死节点上的 Pod
kubectl delete pod foo --force

#删除所有 Pod
kubectl delete pods --all
#操作一个
[root@k8s-master1 ~]# kubectl delete pod -n linux39 nginx-2
pod "nginx-2" deleted
#查看以下
[root@k8s-master1 ~]# kubectl get pod -n linux39
NAME      READY   STATUS    RESTARTS   AGE
nginx-1   1/1     Running   0          52m

#不光可以删除pod,还可以删除名称空间 删除service

apply

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply

基于文件去创建资源对象基于json或者yaml文件创建资源对象的命令行

#将 pod.json 中的配置应用到 pod
kubectl apply -f ./pod.json

#从包含 kustomization.yaml 的目录应用资源 - 例如 dir/kustomization.yaml
kubectl apply -k dir/

#将传递到 stdin 的 JSON 应用到 pod
cat pod.json | kubectl apply -f -

或者命令行也可以看到帮助

kubectl apply --help

create和apply类似,效果一样,但是apply更利于更新

autoscale

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#autoscale

自动更新

diff

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#diff

对比文件

pod.json 中包含的差异资源

kubectl diff -f pod.json

从 stdin 读取差异文件

cat service.yaml | kubectl diff -f -

edit

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#edit

编辑,这个用的比较多,修改已经存在的资源对象

编辑名为“docker-registry”的服务

kubectl edit svc/docker-registry

使用替代编辑器

KUBE_EDITOR="nano" kubectl edit svc/docker-registry

使用 v1 API 格式编辑 JSON 中的作业“myjob”

kubectl edit job.v1.batch/myjob -o json

在 YAML 中编辑部署“mydeployment”并将修改后的配置保存在其注释中

kubectl edit deployment/mydeployment -o yaml --save-config

将创建好的资源对象,进行修改,之前修改ipvs的时候

kubectl edit configmaps -n kube-system kube-proxy 
   mode: "ipvs"
   #修改模式为ipvs

kustomize

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#kustomize

包管理工具k8s给我们提供了两种包管理工具,包管理工具相当于Linux的Ubuntu里的apt或centos的yum

helm/kustmize 两种包管理工具

label

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#label

标签,可以给主节点打标签,给pod打标签

#给pod修改标签,添加标签
#看下刚才创建的nginx-1
[root@k8s-master1 ~]# kubectl get pods --show-labels
NAME      READY   STATUS    RESTARTS   AGE     LABELS
nginx-1   1/1     Running   0          3h29m   run=nginx-1
#因为我们是run启动的,它默认标签是run=nginx-1,我们可以给他加个标签
[root@k8s-master1 ~]# kubectl label pods nginx-1 app=linux39-nginx
pod/nginx-1 labeled
#修改标签为app=linux39-nginx,他的标签类型是key value 键值对的格式
[root@k8s-master1 ~]# kubectl get pods --show-labels 
NAME      READY   STATUS    RESTARTS   AGE     LABELS
nginx-1   1/1     Running   0          3h31m   app=linux39-nginx,run=nginx-1
#查看以下,这样就多了一个标签
#修改标签
[root@k8s-master1 ~]# kubectl label pods nginx-1 app=linux39 --overwrite 
pod/nginx-1 labeled
#将app的标签修改为 app=linux39
[root@k8s-master1 ~]# kubectl label pods nginx-1 app-
pod/nginx-1 unlabeled
#删除app标签  在app后面加"-"号
[root@k8s-master1 ~]# kubectl get pods --show-labels 
NAME      READY   STATUS    RESTARTS   AGE     LABELS
nginx-1   1/1     Running   0          3h40m   run=nginx-1
#就剩下run了
#还可以通过标签来过滤
root@k8s-master1 ~]# kubectl get pod -n kube-system --show-labels 
etcd-k8s-master1                                 1/1     Running   2 (4h27m ago)   17h    component=etcd,tier=control-plane
etcd-k8s-master2.guoguo.com                      1/1     Running   2 (4h27m ago)   17h    component=etcd,tier=control-plane
etcd-k8s-master3.guoguo.com                      1/1     Running   2 (4h26m ago)   17h    component=etcd,tier=control-plane
#省略后面的
#比如我们要过滤出 component=etcd 这个标签
#在后面加个 -l 标签名 就可以
[root@k8s-master1 ~]# kubectl get pod -n kube-system -l component=etcd
NAME                          READY   STATUS    RESTARTS        AGE
etcd-k8s-master1              1/1     Running   2 (4h28m ago)   17h
etcd-k8s-master2.guoguo.com   1/1     Running   2 (4h28m ago)   17h
etcd-k8s-master3.guoguo.com   1/1     Running   2 (4h28m ago)   17h

不光是pod所有的资源对象都可以加标签

#给master1节点加个不可调度
[root@k8s-master1 ~]# kubectl label nodes k8s-master1 node-role.kubernetes.io/master=NoSchedule
node/k8s-master1 labeled
#加上这个标签就无法进行调度了
[root@k8s-master1 ~]# kubectl get nodes --show-labels 

#下图多了这个标签
#node-role.kubernetes.io/master=NoSchedule

kubectl命令行介绍_json_10

patch

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#patch

更新,基于文件或者打印

replace

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#replace

他有两种方式一种基于文件的一种是标准化输入的方式

rollout

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#rollout

回滚

attach

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#attach

和docker exec 一样进入指定的容器

exec

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec

在容器外面执行命令

[root@k8s-master1 ~]# kubectl exec -ti nginx-1 -- ls /
bin   docker-entrypoint.d   home   media  proc	sbin  tmp
boot  docker-entrypoint.sh  lib    mnt	  root	srv   usr
dev   etc		    lib64  opt	  run	sys   var
#进入nginx-1 执行ls / 命令
[root@k8s-master1 ~]# kubectl exec nginx-1 -- hostname
nginx-1
#执行hostname 命令
[root@k8s-master1 ~]# kubectl exec nginx-1 -- cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
#执行任何命令都可以,前提是要有这个命令

进入某个容器

[root@k8s-master1 ~]# kubectl exec -it nginx-1 -- /bin/bash
#进入这个容器
root@nginx-1:/# cat /etc/os-release
#执行命令
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
##注意如果pod里面有多个容器,需要-c执行那个容器否则会进去default容器中去

切换到原始终端模式;将 stdin 从 pod mypod 发送到 ruby-container 中的“bash”,并将 stdout/stderr 从“bash”发送回客户端

kubectl exec -it -n <namespace>  <pod-name> -c <container-name> -- <command>
#其中:
#<pod-name> 是您要进入的 Pod 的名称。
#<container-name> 是要在其中执行命令的容器的名称。
#<command> 是您要在容器内部执行的命令。
#如果 Pod 中只有一个容器,您可以忽略 -c 参数。但如果 Pod 包含多个容器,您需要通过 -c 参数指定要执行命令的容器。

#举例来说,如果有一个名为 my-pod 的 Pod,其中包含两个容器,名称分别为 container-1 和 container-2,您可以使用以下命令来在 container-2 中执行命令:

kubectl exec -it my-pod -c container-2 -- /bin/bash

#这将在 my-pod Pod 的 container-2 容器内启动一个交互式的 Bash shell。
#所以,在您的情况下,如果 nginx-1 Pod 只有一个容器,您可以直接使用之前提供的命令,如果它有多个容器,并且您想要在特定的容器中执行命令,您可以使用 -c 参数来指定容器名称。

cp

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#cp

把pod里面某一个文件复制出来,这些通常需要workdir的参数,工作目录copy

describe

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe

这个用的比较多,我们后面查看后面创建各种各样的资源对象出错了

比如创建一个

[root@k8s-master1 ~]# kubectl run nginx-2 --image=nginx:1.26.1
pod/nginx-2 created
[root@k8s-master1 ~]# kubectl get pods
NAME      READY   STATUS         RESTARTS   AGE
nginx-1   1/1     Running        0          4h
nginx-2   0/1     ErrImagePull   0          35s
#它创建不出来它会报错,不管报错不报错都可以通过这个命令来查看
[root@k8s-master1 ~]# kubectl describe pods nginx-2
#他会给你打印整个创建过程的详细信息
#成功or失败

kubectl命令行介绍_k8s_11

logs

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs

查看日志

[root@k8s-master1 ~]# kubectl logs nginx-1

port-forward

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#port-forward

就是把容器某个端口号和你节点本地端口号做个绑定关系

[root@k8s-master1 ~]# kubectl port-forward nginx-1 80
#前提pod里面得有这个端口号然后本地还得空余这个端口号,没什么意义

top

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#top

看node或者pod资源使用情况

#查看node
[root@k8s-master1 ~]# kubectl top nodes
NAME                     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master1              116m         5%     1105Mi          59%       
k8s-master2.guoguo.com   100m         5%     1014Mi          54%       
k8s-master3.guoguo.com   128m         6%     1225Mi          65%       
k8s-node1.guoguo.com     40m          2%     579Mi           31%       
k8s-node2.guoguo.com     46m          2%     591Mi           31%       
k8s-node3.guoguo.com     39m          1%     579Mi           30% 

#查看pod
[root@k8s-master1 ~]# kubectl top pods
NAME      CPU(cores)   MEMORY(bytes)   
nginx-1   0m           3Mi

api-versions

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#api-versions

查看当前k8s所能支持的api的版本

[root@k8s-master1 ~]# kubectl top pods
NAME      CPU(cores)   MEMORY(bytes)   
nginx-1   0m           3Mi             
[root@k8s-master1 ~]# kubectl api-versions 
admissionregistration.k8s.io/v1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1
apps/v1
authentication.k8s.io/v1
authorization.k8s.io/v1
autoscaling/v1
autoscaling/v2
batch/v1
certificates.k8s.io/v1
coordination.k8s.io/v1
crd.projectcalico.org/v1
discovery.k8s.io/v1
events.k8s.io/v1
flowcontrol.apiserver.k8s.io/v1beta2
flowcontrol.apiserver.k8s.io/v1beta3
metrics.k8s.io/v1beta1
networking.k8s.io/v1
node.k8s.io/v1
policy/v1
rbac.authorization.k8s.io/v1
scheduling.k8s.io/v1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

api-resources

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#api-resources

k8s所支持的资源对象

[root@k8s-master1 ~]# kubectl api-resources 
#查询方式

cluster-info

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#cluster-info

查看集群信息的

[root@k8s-master1 ~]# kubectl cluster-info 
Kubernetes control plane is running at https://172.17.0.200:16443
CoreDNS is running at https://172.17.0.200:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

explain

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#explain

类似于帮助,遇到不会写的用explain查询

[root@k8s-master1 ~]# kubectl explain pod

标签:master1,kubectl,io,介绍,nginx,命令行,pod,k8s
From: https://blog.51cto.com/u_15971294/6949993

相关文章

  • go 语言实战入门案例之命令行排版词典
    文章和代码已经归档至【Github仓库:<https://github.com/timerring/backend-tutorial>】或者公众号【AIShareLab】回复go也可获取。命令行排版的词典先看一下用到的API,以彩云科技提供的在线翻译为例。请打开彩云翻译的网页,然后右键检查打开浏览器的开发者工具。此时我们点一下......
  • Python开发实例(二)To-Do列表应用:创建一个简单的命令行应用,允许用户添加、删除和查看待
    defprint_todo_list(todo_list):ifnottodo_list:print("待办事项列表为空!")else:print("待办事项列表:")forindex,todoinenumerate(todo_list,1):print(f"{index}.{todo}")defadd_todo(todo_......
  • iTOP-RK3588开发板Ubuntu 系统交叉编译 Qt 工程-命令行交叉编译
    使用源码rk3588_linux/buildroot/output/rockchip_rk3588/host/bin/qmake交叉编译QT工程。最后烧写编译好的buildroot镜像,将编译好的QT工程可执行程序在buildroot系统上运行。交叉编译QT工程如下所示,首先进入QLed的工程目录下。然后使用以下命令交叉编译QT工程,如下......
  • MAC设置使用命令行通过vs code打开目录
    未设置之前,我们需要先打开vscode,然后再command+o打开对应目录或文件,设置之后,就可以使用命令行直接打开目录或文件设置方式:打开vscode,shift+command+p打开命令面板输入shell,选择“在PATH中安装code命令”确认即可然后就可以通过命令行打开目录啦code.......
  • PHP实现think-queue介绍
    参考资料官方文档https://github.com/coolseven/notes/tree/master/thinkphp-queuethink-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第三方接口,可用于短信发送、邮件发送、APP......
  • Redis-Predis 扩展介绍
    PredisPredis适用于PHP5.3以上版本在Redis使用,其中包括了集群的使用。主要功能支持各个版本的Redis(从2.0到3.0以及unstable)使用哈希方式或用户自定义方式进行集群中节点的客户端分片支持Redis-cluster(集群)(Redis>=3.0).支持主/从结构的读写分离支持已知的所有R......
  • Kubernetes主流网络插件介绍
    一、Flannel1.1简介Flannel由CoreOS研发,使用”虚拟网桥和veth设备”的方式为Pod创建虚拟网络接口,通过可配置的后端(backend)定义Pod间的通信网络。它支持基于VXLAN和UDP的Overlay网络,以及基于三层路由的Underlay网络。    对于每一个容器而言,在加入网络时,在每个节点创建一......
  • k8s 学习笔记之 Pod——Pod 的介绍
    Pod的介绍Pod的结构每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类:用户程序所在的容器,数量可多可少Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个:可以以它为依据,评估整个Pod的健康状态可以在根容器上设置Ip地址,其它容器都此Ip(Pod......
  • ubuntu20.04 的 jetson设备命令行设置静态ip
    参考:https://github.com/f1tenth/f1tenth_doc/blob/stable/getting_started/software_setup/optional_software_nx.rst查看网口设备ifconfig#查看ip地址nmclid#查看网口设备nmclicshow#展示网口设备对应的名字修改eth0的ipsudonmclicmodWired\co......
  • Unity第三方插件: OdinInspector简单介绍
    首先,OdinInspector需要在AssetStore付费购买,有的时候打折包也会包含1.Attribute排版更加美观和易于管理,且使用非常方便,只需要加Attribute就能显示在Inspector,并且官方提供了非常多的Attribute,想要使用的时候直接在Unity中查看使用就可以,也提供了代码 ......