k8s常用操作
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
写在前面
本文记录k8s的常见操作毕竟好记性不如烂笔头。
1pod查看日志
dongyunqi@dongyunqi-virtual-machine:~/test$ kubectl logs busy-pod
ubuntu, on
因为pod中只有一个容器所以不需要指定容器当有多个容器时需要指定容器如下:
dongyunqi@dongyunqi-virtual-machine:~/test$ kubectl logs ngx-num1-pod -c ngx1111
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
...
2查看pod信息
可以直接查看也可以通过label过滤查看如下
dongyunqi@mongodaddy:~/k8s$ kubectl get pod
NAME READY STATUS RESTARTS AGE
ngx-dep-name-dcc8b7bfd-7lbrq 1/1 Running 0 17m
ngx-dep-name-dcc8b7bfd-9m2rs 1/1 Running 0 17m
ngx-dep-name-dcc8b7bfd-wp4zt 1/1 Running 0 17m
redis-ds-5jf5x 1/1 Running 1 (4h34m ago) 40h
redis-ds-n8p45 1/1 Running 1 (4h34m ago) 40h
5可以根据POD的label来过滤POD支持使用==、!=、in、notin等表达式如下
dongyunqi@mongodaddy:~/k8s$ kubectl get pod -l 'app in (ngx, nginx, ngx-dep-pod)'
NAME READY STATUS RESTARTS AGE
ngx-dep-name-577dd8d59b-4xkd2 1/1 Running 0 3m34s
ngx-dep-name-577dd8d59b-dcx8k 1/1 Running 0 3m34s
ngx-dep-name-577dd8d59b-f2kxp 1/1 Running 0 3m34s
dongyunqi@mongodaddy:~/k8s$ kubectl get pod -l 'app=ngx-dep-pod'
NAME READY STATUS RESTARTS AGE
ngx-dep-name-577dd8d59b-4xkd2 1/1 Running 0 3m59s
ngx-dep-name-577dd8d59b-dcx8k 1/1 Running 0 3m59s
ngx-dep-name-577dd8d59b-f2kxp 1/1 Running 0 3m59s
3查看pod中运行的容器
3.1describe
dongyunqi@mongodaddy:~/k8s$ kubectl describe pod ngx-dep-name-dcc8b7bfd-7lbrq | grep Events -A 100
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 34m default-scheduler Successfully assigned default/ngx-dep-name-dcc8b7bfd-7lbrq to mongomummy # pod分配的Node
Normal Pulled 34m kubelet Container image "nginx:alpine" already present on machine # 创建容器使用的镜像
Normal Created 34m kubelet Created container nginx # 创建容器显示的是容器的名称
Normal Started 34m kubelet Started container nginx
dongyunqi@mongodaddy:~/k8s$ kubectl describe pod ngx-dep-name-dcc8b7bfd-7lbrq | grep Containers: -A 100
Containers: # 所有的容器信息
nginx: # 容器的名称
Container ID: docker://87afa9c8b6c1a9c8434a5dcbe39eb55863ecff4c91a68b408a3fd5f11b18a86f
Image: nginx:alpine # 容器使用的镜像
Image ID: docker-pullable://nginx@sha256:eb05700fe7baa6890b74278e39b66b2ed1326831f9ec3ed4bdc6361a4ac2f333
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Thu, 12 Jan 2023 14:59:05 +0800
Ready: True
Restart Count: 0 # 容器重启的此时
Environment: <none>
Mounts:
/etc/nginx/conf.d from ngx-conf-vol (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-wlbhf (ro)
3.2jsonpath过滤
dongyunqi@mongodaddy:~/k8s$ kubectl get pods ngx-dep-name-dcc8b7bfd-7lbrq -o jsonpath={.spec.containers[*].name}
nginx
4通过events排查异常POD
当POD运行异常时如一直PENDING可通过kubectl describe查看异常信息
dongyunqi@mongodaddy:~/k8s$ kubectl describe pod ngx-dep-name-dcc8b7bfd-7lbrq | grep Events -A 100
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 34m default-scheduler Successfully assigned default/ngx-dep-name-dcc8b7bfd-7lbrq to mongomummy # pod分配的Node
Normal Pulled 34m kubelet Container image "nginx:alpine" already present on machine # 创建容器使用的镜像
Normal Created 34m kubelet Created container nginx # 创建容器显示的是容器的名称
Normal Started 34m kubelet Started container nginx
这里展示的正常如果是发生错误则在Message列会有对应的提示。如下是我从网上找的一个比较典型的错误信息
0/5 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 4 Insufficient memory.
0/5
是说5个容器都不可用1 node(s) had taint {node-role.kubernetes.io/master: }
其中一个是因为有污点 , 4 Insufficient memory
另外四个是因为内存不足了这样我们就可以对症下药
了。
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |