k8s-某视频课命令问题排查了解

命令参数了解

Basic Commands (Beginner);
create  从文件或stdin创建资源
expose  为deployment,pod创建Service.
run     Run a particular image ori the cluster
set    Set specific features on objects

Basic Commands (Intermediate):
get    最基本的查询命令。如 kubectl get rs,kubectl get deploy,
explain   查看资源定义。如kubect1 explain replicaset
edit    使用系统编辑器编辑资源。如kubectl edit deploy/foo
delete     删除指定资源,支持文件名、资源名、label selector
Deploy commands:
rollout   Deployment,Daemonset的升级过程管理(查看状态、操作历史。暂停升级、恢复升级、回滚等)
rolling-update    客户端滚动升级,仅限ReplicationController
scale    修改Deployment,ReplicaSet,·ReplicationController,Job的实例数
autoscale   为Deploy,RS,RC配置自动伸缩规则(依赖heapster和hpa)

Cluster Management Commands:
certificate     Modify certificate resources.
cluster-info    查看集群信息
top    查看资源占用率(依赖heapster)
cordon    标记节点为unschedulable
uncordon    标记节点为schedulable
drain    驱逐节点上的应用,准备下线维护
taint    修改节点taint标记
Troubleshooting and Debugging Commands:
describe    查看资源详情
logs    查看pod内容器的日志
attach     Attach到pod内的一个容器··在指定容器内执行命令
port-forward     为pod创建本地端口映射
proxy    为Kubernetes API server创建代理
cp    容器内外/容器间文件拷贝

Advanced Commands:
apply    从文件或stdin创建/更新资源
patch    使用strategic merge patch语法更新对象的某些字段
replace    从文件或stdin更新资源
convert    在不同API版本之间转换对象定义
settings Commands:
label    给资源设置label
annotate	给资源设置annotation
completion		获取shell自动补全脚本(支持bash和zsh)

other Commands:
api-versions     Print the supported API versions on the server, in the form of "group/version"
config  	修改kubect1配置(kubeconfig文件),如context
help		.Help about any command
version		查看客户端和Server端K8s版本

技巧

kubectl写yaml太累,找样例太麻烦?
用run命令生成
kubect1 run --image=nginx my-deploy -o yam1 --dry-run > my-deploy.yaml
用get命令导出
kubectl get statefulset/foo -o=yaml --export> new.yaml
Pod亲和性下面字段的拼写忘记了
kubectl explain pod.spec.affinity.podAffinity

异常排查

master异常

APIServer、ETCD异常: 
	无法创建、更新、删除资源对象,节点正常工作。
	已有资源对象正常工作,不受影响
	
Controller异常:
	deployment、rs、ds等对象操作请求处理正常,但实际未生效
	Service关联的后端pod变化,但endpoint不更新

Scheduler异常:
	Pod长时间Pending,且无调度失败event信息
Master组件状态查询: kubectl get cs
进程不存在
明确组件生命周期管理方式
故障检测方式是否有效( livenessProbe、restartPolicy )重新启动进程

进程crash:  分析日志

组件功能异常:  分析日志、检查依赖组件是否正常

节点异常原因排查

节点状态查询:kubectl get nodes
常见异常现象
√节点状态为NotReady
√调度到该节点上的Pod显示NodeLostUnkonwn。Pending等状态
常见故障
kubelet进程异常
未安装cni插件
Docker异常
磁盘空间不足
内存不足

定位方式
kubectl describe node查看异常事件
service status查看系统进程状态
journalctl查看系统组件日志t
op查看系统cpu、内存
du、df查看磁盘使用情况

应用异常原因排查

应用模型异常
    已存在的POD数超过resource-quota限制: kubectl describe quota -n ${ns}
	待创建的POD不满足admission controller陈制: 查看kube-apiserver enable-admission-plugins参数启用了哪些ac
DaemonSet找不到符合要求的节点
	kubect describe ds -n,$(ns)
	查看ds的nodeSelector
	查看节点taints
StatefulSet: podManagementPolicy 、serviceName、volumeClaimTemplates

POD实例异常
状态检查:kubectl get/describe pod-
Pending: 可用资源不足: describe pod可看到调度失败event、不满足亲和性策略、节点有taints

Waiting: 
	镜像下载失败 、imagePullPolicy配置是否正确
	配置的imagePullSecret无法通过认证。查看环境是否存在可用的dockerconfigison类型的secret

CrashBackoff: 
	kubectl logs查看容器日志、kubectl/docker exec登录容器验证功能
	检查pod配置是否正确:command、liveness、readiness

Service访问异常原因排查

通过域名访问Service,nslookup判断域名解析是否正常
没有Endpoint
	kubectl -n ${ns} get endpoints ${service-name}
	kubectl -n ${ns] get pods --selector=${service-selector}
	查看pod status是否为ready状态
	查看service port定义与pod定义是否匹配
Endpoint访问不通
kube-proxy是否运行正常,依赖的conntrack是否安装
查看kube-proxy配置参数,确认mode类型,查看转发规则是否正确
	userspace:
		iptables-save | grep ${servicename}
		KUBE-PORTALS-CONTAINER、KUBE-PORTALS-HOST
	iptables:
		iptables-save | grep ${servicename}
		KUBE-SVC-xXx、KUBE-SEP-XXX
	ipvs:
		ipvsadm -ln

pod服务异常排查

1、查看Service的后端 Endpoint是否正常

kubectl get endpoints  <service name>
查看某个服务的后端Endpoint列表,如果列表为空,则可能因为:
    Service的 Label Selector与 Pod的 Label不匹配;
	后端Pod一直没有达到Readv状态(通过kubectl get pods进一步查看Pod的状态); 
	Service的 targetPort端口号与Pod 的containerPort不一致等。

2.查看Service的名称能否被正确解析为ClusterlP地址

可以通过在客户端容器中ning <service name>,<namespace>.svc进行检查,
如果能够得到Service的 ClusterIP地址,则说明DNS服务能够正确解析Service的名称;如果不能得到Service的 ClusterIP地址,则可能是因为Kubernetes集群的 DNS服务工作异常。

3.查看kube-proxy 的转发规则是否正确

我们可以将 kube-proxy服务设置为IPVS 或 iptables负载分发模式。
对于IPVS负载分发模式,可以通过 ipvsadm工具查看Node上的IPVS 规则,查看否正确设置Service ClusterIP的相关规则。对于 iptables负载分发模式,可以通过查看Node上的 iptables规则,查看是否正置 Service ClusterIP的相关规则。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值