kubectl get pods
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-565887c86b-2jv55 1/1 Running 0 6h15m
nginx-deployment-565887c86b-2sk6n 1/1 Running 0 6h15m
返回default空间下的pods列表
Name:pod的名称
READY:启动成功的数量/pod中的数量
STATUS:状
AGE:启动时间
-o wide
-o wide 返回宽的信息,增加了IP、所在结点信息等
[root@scms01 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-565887c86b-2jv55 1/1 Running 0 6h25m 192.168.61.5 scms01 <none> <none>
nginx-deployment-565887c86b-2sk6n 1/1 Running 0 6h25m 192.168.61.4 scms01 <none> <none>
--all-namespaces
查看所有空间下的pods,可以看到不只有default空间还有kube-system空间
[root@scms01 ~]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-deployment-565887c86b-2jv55 1/1 Running 0 6h52m
default nginx-deployment-565887c86b-2sk6n 1/1 Running 0 6h52m
kube-system calico-kube-controllers-57b57c56f-sgl6h 1/1 Running 0 6h54m
kube-system calico-node-jgbsq 1/1 Running 0 6h27m
kube-system calico-node-pgjzb 1/1 Running 0 6h54m
kube-system coredns-5bbd96d687-mkf9p 1/1 Running 0 7h51m
kube-system coredns-5bbd96d687-qqjmw 1/1 Running 0 7h51m
kube-system etcd-scms01 1/1 Running 0 7h51m
kube-system kube-apiserver-scms01 1/1 Running 0 7h51m
kube-system kube-controller-manager-scms01 1/1 Running 0 7h51m
kube-system kube-proxy-j5v5b 1/1 Running 0 7h51m
kube-system kube-proxy-rfk25 1/1 Running 0 6h27m
kube-system kube-scheduler-scms01 1/1 Running 0 7h51m
--namespace
制定某一空间
kubectl get pod --namespace=kube-system
2fluentd-cloud-logging-clm8f 1/1 Running 0 29m
kubectl get svc
返回default空间下的pods列表
Name:当前service名称
TYPE:类型,分为多种比如ClusterIP、NodePort、LoadBalancer,ClusterIP是默认的类型,只能在集群内部进行访问、NodePort是在集群外部时候用的,是为外不能访问到集群,这个端口可以系统自动分配,也可以用户自己定义,LoadBalancer 不是由k8s集群维护,需要云服务上支持。
CLUSTER-IP:就是k8s分配的,及时NodePort模式,也会分配一个
EXTERNAL-IP:需要用户维护的一个外部IP地址池externalIPs,并且在service的描述中添加externalIPs字段,k8s并不负责维护externalIp的路由,需要有集群admin或者Iaas平台维护,该类型可以和service的任何类型一块使用,通过externalIPs也可以访问pod的
PORT(s): 协议和端口
[root@scms01 ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7h27m
nginx-service NodePort 10.103.42.23 <none> 80:30088/TCP 6h25m
-o wide
增加了selector选择列
[root@scms01 ~]# kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7h40m <none>
nginx-service NodePort 10.103.42.23 <none> 80:30088/TCP 6h37m app=nginx
--all-namespaces
查看所有空间下的pods,可以看到不只有default空间还有kube-system空间
kubectl get svc --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7h47m
default nginx-service NodePort 10.103.42.23 <none> 80:30088/TCP 6h45m
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 7h47m
kubectl get nodes
Name:结点名称
STATUS:状态 not ready / ready
ROLES:
VERSION:运行的版本
[root@scms01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
scms01 Ready control-plane 7h41m v1.26.3
scms02 Ready <none> 6h17m v1.26.3
kubectl get nodes -o wide
增加了Internal-ip / external-ip
os-image:操作系统镜像
kernel-version:系统版本
container-runtime:运行时版本
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
scms01 Ready control-plane 7h41m v1.26.3 172.16.2.220 <none> CentOS Linux 7 (Core) 3.10.0-1160.45.1.el7.x86_64 containerd://1.6.19
scms02 Ready <none> 6h18m v1.26.3 172.16.2.221 <none> CentOS Linux 7 (Core) 3.10.0-1160.45.1.el7.x86_64 containerd://1.6.19
kubectl --namespace=空间名称 describe pod pod名称
查看某一个空间下运行信息,可以看到nginx-deployment-565887c86b-2jv55pod的所属空间为default、运行的节点名称和ip、Labels、当前状态、pod的IP、镜像名称、挂载路径以及Volume所属的信息
[root@scms01 ~]# kubectl --namespace=default describe pod nginx-deployment-565887c86b-2jv55
Name: nginx-deployment-565887c86b-2jv55
Namespace: default
Priority: 0
Service Account: default
Node: scms01/172.16.2.220
Start Time: Sat, 25 Mar 2023 11:46:30 +0800
Labels: app=nginx
pod-template-hash=565887c86b
Annotations: cni.projectcalico.org/containerID: f1903ea5e6f53b3f006585c59f223dad3d4f08eaf833277869eabdf1968cb13c
cni.projectcalico.org/podIP: 192.168.61.5/32
cni.projectcalico.org/podIPs: 192.168.61.5/32
Status: Running
IP: 192.168.61.5
IPs:
IP: 192.168.61.5
Controlled By: ReplicaSet/nginx-deployment-565887c86b
Containers:
nginx:
Container ID: containerd://ebe35228b24f86fc2492a1bc25d400026117db77b9e95e91716dcc5e0d32fd51
Image: nginx:1.23.2
Image ID: docker.io/library/nginx@sha256:ab589a3c466e347b1c0573be23356676df90cd7ce2dbf6ec332a5f0a8b5e59db
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Sat, 25 Mar 2023 11:46:46 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-sh48h (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-sh48h:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events: <none>
kubectl describe node [机器名]
查看某一个node描述
//节点名称
Name: scms01
//角色
Roles: control-plane
//里面有的默认标签
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=scms01
kubernetes.io/os=linux
node-role.kubernetes.io/control-plane=
node.kubernetes.io/exclude-from-external-load-balancers=
zone=north
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/containerd/containerd.sock
node.alpha.kubernetes.io/ttl: 0
projectcalico.org/IPv4Address: 172.16.2.220/20
projectcalico.org/IPv4IPIPTunnelAddr: 192.168.61.0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Sat, 25 Mar 2023 10:46:15 +0800
Taints: <none>
Unschedulable: false
Lease:
HolderIdentity: scms01
AcquireTime: <unset>
RenewTime: Tue, 18 Apr 2023 16:21:05 +0800
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Sat, 25 Mar 2023 11:44:10 +0800 Sat, 25 Mar 2023 11:44:10 +0800 CalicoIsUp Calico is running on this node
MemoryPressure False Tue, 18 Apr 2023 16:19:40 +0800 Sat, 25 Mar 2023 10:46:14 +0800 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Tue, 18 Apr 2023 16:19:40 +0800 Sat, 25 Mar 2023 10:46:14 +0800 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Tue, 18 Apr 2023 16:19:40 +0800 Sat, 25 Mar 2023 10:46:14 +0800 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Tue, 18 Apr 2023 16:19:40 +0800 Sat, 25 Mar 2023 11:43:57 +0800 KubeletReady kubelet is posting ready status
//IP信息
Addresses:
InternalIP: 172.16.2.220
Hostname: scms01
//容器,cpu
Capacity:
cpu: 4
ephemeral-storage: 103080204Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 8008580Ki
pods: 110
Allocatable:
cpu: 4
ephemeral-storage: 94998715850
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7906180Ki
pods: 110
System Info:
Machine ID: 20211123171600472607520636465043
System UUID: DB95B241-326D-4BDC-A7F8-C47D88269969
Boot ID: d3c76052-e932-496f-bbfa-9ff7193cfd63
Kernel Version: 3.10.0-1160.45.1.el7.x86_64
OS Image: CentOS Linux 7 (Core)
Operating System: linux
Architecture: amd64
Container Runtime Version: containerd://1.6.19
Kubelet Version: v1.26.3
Kube-Proxy Version: v1.26.3
Non-terminated Pods: (16 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age
--------- ---- ------------ ---------- --------------- ------------- ---
default myweb-7cd9fb577f-jpm4q 0 (0%) 0 (0%) 0 (0%) 0 (0%) 9d
default nginx-deployment-565887c86b-2jv55 0 (0%) 0 (0%) 0 (0%) 0 (0%) 24d
default nginx-deployment-565887c86b-2sk6n 0 (0%) 0 (0%) 0 (0%) 0 (
kube-system 2fluentd-cloud-logging-clm8f 100m (2%) 100m (2%) 200Mi (2%) 200Mi (2%) 45m
kube-system calico-kube-controllers-57b57c56f-sgl6h 0 (0%) 0 (0%) 0 (0%) 0 (0%) 24d
kube-system calico-node-pgjzb 250m (6%) 0 (0%) 0 (0%) 0 (0%) 24d
kube-system coredns-5bbd96d687-mkf9p 100m (2%) 0 (0%) 70Mi (0%) 170Mi (2%) 24d
kube-system coredns-5bbd96d687-qqjmw 100m (2%) 0 (0%) 70Mi (0%) 170Mi (2%) 24d
kube-system etcd-scms01 100m (2%) 0 (0%) 100Mi (1%) 0 (0%) 24d
kube-system kube-apiserver-scms01 250m (6%) 0 (0%) 0 (0%) 0 (0%) 24d
kube-system kube-controller-manager-scms01 200m (5%) 0 (0%) 0 (0%) 0 (0%) 24d
kube-system kube-proxy-j5v5b 0 (0%) 0 (0%) 0 (0%) 0 (0%) 24d
kube-system kube-scheduler-scms01 100m (2%) 0 (0%) 0 (0%) 0 (0%) 24d
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 1200m (30%) 100m (2%)
memory 440Mi (5%) 540Mi (6%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>
kubectl get nodes
查看所有的node节点
[root@scms01 day3]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
scms01 Ready control-plane 17d v1.26.3
scms02 Ready <none> 17d v1.26.3
kubectl label nodes scms01 zone=north2
给节点scms01增加标签zone=north2
kubectl get node --show-labels
查看标签
kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
scms01 Ready control-plane 17d v1.26.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=scms01,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=,zone=north
scms02 Ready <none> 17d v1.26.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=scms02,kubernetes.io/os=linux,zone=north
可见在一个节点上,打了很多个标签
kubectl delete 资源 资源名称 --namespace=kube-system
kubectl delete daemonset 2fluentd-cloud-logging --namespace=kube-system
kubectl logs 资源名称 --namespace=kube-system
这个命令非常有用,当你的服务起不来的时候,可以查看问题
kubectl config view
kubectl config view
是一个 Kubernetes 命令行工具(kubectl)的命令,用于查看当前 kubeconfig 文件的详细信息。kubeconfig 文件是一个配置文件,用于管理 Kubernetes 集群、用户和上下文等信息。
使用 kubectl config view
命令可以查看当前 kubeconfig 文件中定义的所有集群、用户和上下文等信息,并以 YAML 或 JSON 格式返回输出结果。此外,您还可以使用该命令来查看当前所选的上下文,以及默认的 API Server 地址和认证信息等。
例如,在以下示例中,使用 kubectl config view
命令可以得到一个基本的 YAML 输出:
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ...
server: https://172.16.0.10:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubectl-user
name: kubectl-context
current-context: kubectl-context
kind: Config
preferences: {}
users:
- name: kubectl-user
user:
client-certificate-data: ...
client-key-data: ...
在上面的输出中,可以看到 kubeconfig 文件中定义了一个名为 kubectl-context
的上下文,其包含了一个名为 kubernetes
的集群和一个名为 kubectl-user
的用户。
--raw
是一个 kubectl config view
命令的参数,用于指示 kubectl 输出原始的配置文件格式。使用 --raw
参数后,输出中将以原始格式(YAML 或 JSON)显示 Kubernetes 配置文件,而不会对其进行任何格式化或缩进。
--minify
是一个 kubectl config view
命令的参数,用于指示 kubectl 输出一个最小化的版本的配置文件。使用 --minify
参数后,输出中将只包含当前所选上下文的信息,这有助于简化输出并提高可读性。
kubectl --v=8
是一个 Kubernetes 命令行工具(kubectl)的参数,用于指定 kubectl 输出的日志级别。在 Kubernetes 中,日志级别分为以下几个等级:
- 0:仅输出关键信息和错误消息。
- 1:输出所有关键信息、警告和错误消息。
- 2:输出所有信息、警告和错误消息。
- 3:输出更详细的信息、警告和错误消息。
- 4 或更高:输出调试信息以及更详细的警告和错误消息。
使用 --v=8
参数后,kubectl 将输出大量的调试信息,并将所有 HTTP 请求和响应都记录到日志中。这对于排查一些比较难懂的问题非常有用,但是也会占用大量的磁盘空间,并且可能会影响性能。
例如,在以下示例中,使用 --v=8
参数可以得到一个非常详细的输出,其中包含了所有的 HTTP 请求和响应信息:
$ kubectl get pods --v=8
...
I0313 17:12:09.456897 11815 loader.go:357] Config loaded from file /home/user/.kube/config
I0313 17:12:09.458163 11815 round_trippers.go:419] GET https://172.16.0.10:6443/api/v1/namespaces/default/pods?limit=500
I0313 17:12:09.458179 11815 round_trippers.go:426] Request Headers:
I0313 17:12:09.458187 11815 round_trippers.go:430] Accept: application/json, */*
I0313 17:12:09.459184 11815 round_trippers.go:447] Response Status: 200 OK
I0313 17:12:09.459210 11815 round_trippers.go:450] Response Headers:
...
在上面的输出中,可以看到大量的信息,其中包括了所有的请求和响应头、正文等详细信息