K8S

使用Kubernetes(K8S)常用运维命令汇总

已邀请:

获取pods
kubectl get pods

获取全部pods
kubectl get pods -A

通过pod登录容器内
kubectl exec -it -n bash

查看pods详细信息

kubectl get pod -o wide -A


查看pod的yaml文件

kubectl get pod -n -o yaml


例:kubectl get pod dev-front-7c6899d485-gl5br -n c87e2267-1001-4c70-bb2a-ab41f3b81aa3 -o yaml

/uploads/answer/20201029/6a3aa2233395eeb051d83fd32a2aaaa2.png

/uploads/answer/20201029/fb9c99912b419199ae38bb863037d4d3.png


编辑pod的yaml文件

kubectl get deployment -n
kubectl edit depolyment -n -o yaml


查看所用pod详细描述
#kubectl describe pod –A


查看指定pod详细描述
可用于对驱逐的pod进行问题定位:
1) 查看pod运行状态
# kubectl get pod -A -o wide

/uploads/answer/20201029/ace48fa766d23eab86eec3dd7b10233a.png

2) 查看pod详细描述
命令格式:
#kubectl describe pod pod_name –n NAMESPACE
#kubectl describe pod dev-am-fa-74c77bb45-dwh7h -n c87e2267-1001-4c70-bb2a-ab41f3b81aa3

/uploads/answer/20201029/5ba9738f91edee2e83ecfd7122fb3c39.png


查看指定pod日志
1) 首先先获取pod信息
# kubectl get po -A -o wide|grep am (am表示匹配pod的name)
/uploads/answer/20201029/3eddf057f77dfcf86b3e0ef79b4349f6.png
2) 查看pod日志
命令格式:
#kubectl logs –f pod_name –n NAMESPACE
# kubectl logs -f dev-am-manage-7d9956c85d-stw6z -n c87e2267-1001-4c70-bb2a-ab41f3b81aa3

获取service、endpoints、pod命令
[root@iuap-11 ~]# kubectl get svc,ep,po
如上命令获取的为default命名空间数据
/uploads/answer/20201029/68683ef5c1d3741c5babb311d2c43077.png

[root@iuap-11 ~]# kubectl get svc,ep,po -A -o wide
如上命令可以获取所有命名空间数据

kubectl logs 无法查看node节点pod日志问题
使用3台服务器安装kubernetes集群
# 111.230.133.xxx master 服务器主节点
# 120.230.12.xxx slave1
# 111.230.12.xxx slave2
集群安装成功后我以为一切正常。可以正常使用。
获取节点:
/uploads/answer/20201029/5a1569dc06a10b88ff6b3de6c96c3be1.png
获取所有的pods:

/uploads/answer/20201029/b264710c9720fbdf10cf07b01b94b82a.png


# kubectl logs kube-proxy-69qt8 查看pod日志 从节点无法查看,而在主机节点上的pods使用这个命令后却可以查看。
kube-proxy 要求 NODE 节点操作系统中要具备 /sys/module/br_netfilter 文件,而且还要设置 bridge-nf-call-iptables=1,如果不满足要求,那么 kube-proxy 只是将检查信息记录到日志中,kube-proxy 仍然会正常运行,但是这样通过 Kube-proxy 设置的某些 iptables 规则就不会工作
然后执行如下命令:
# modprobe br_netfilter
# sysctl net.bridge.bridge-nf-call-iptables=1
重启kubernetes集群后发现可以使用kubectl logs 查看node节点上pod的日志。
查看当前值:
more /proc/sys/net/bridge/bridge-nf-call-iptables

八. Kubernetes网络-clusterIP(calico)
1. calico支持的模式
1.1 BGP模式
路由规则直接使用物理机网卡作为路由器转发
路由即纯bgp模式,理论上IPIP模式的网络传输性能低于纯bgp模式
/uploads/answer/20201029/d0b87655b0e9485c3df5fa35687e9533.png
 BGP 原理剖析

/uploads/answer/20201029/472adeb9a0f76856e5e9e2e89ba90602.png

1.2 IPIP模式
一种妥协的overlay机制,在宿主机创建1个“tunl0”虚拟端口
通过tunl0作为路由转发分为两种模式:
 ipip always模式(纯ipip模式)
/uploads/answer/20201029/9c546f276eb61fd82f059f97568302b6.png
 ipip cross-subnet模式
ipip-bgp混合模式,指“同子网内路由采用bgp,跨子网路由采用ipip”

/uploads/answer/20201029/0af39d222a97037ffdca758234fe7d8d.png




2. calico管理
2.1查看calico网络协议模式及IP地址池
# calicoctl get ippool -o wide
/uploads/answer/20201029/7eed223892edb5bf9b403864631b58f8.png

2.2获取calico的pod信息
# kubectl get pod -o wide -n kube-system

/uploads/answer/20201029/7f9dc9ad886c75e92bd3fbc9bcf8421c.png


获取calico的node
默认在/etc/calico/calicoctl.cfg下
主要修改etcd的路径,还有它连接的证书,它主要操作etcd
/uploads/answer/20201029/df2ca445899bce5c99ce55ce0417ba60.png
# calicoctl get nodes
/uploads/answer/20201029/71765826e47aa8734b96757ef1d3ab91.png
2.4查看calico的node运行状态
# calicoctl node status

/uploads/answer/20201029/8b34776766a13f94afa1e76034f416bd.png

这个工具主要也是往etcd里去操作,主要再etcd去获得,这个表只不过是帮你从etcd中拿出来格式化输出可以通过这个命令可以看出,进行长链接输出出来


获取service信息
# kubectl get svc -o wide --all-namespaces
/uploads/answer/20201029/923ee4b7f623d96c22800a4534f6e562.png
可以查看服务实例所对应的端口

# kubectl get pod -o wide --all-namespaces
/uploads/answer/20201029/95fcabef4ec2f1806ab60c9507c03655.png
2.6查看指定pod的service信息
先通过kubectl get svc -o wide --all-namespaces查出name及namespace
kubectl describe service dev-mergetosplite -n c87e2267-1001-4c70-bb2a-ab41f3b81aa3

/uploads/answer/20201029/407135ebcea9f1989c564dcca94db72d.png



DNS的路由
cluster IP是一个纯虚拟的IP,完全由iptables完成路由
每个pod中,默认写了kube-DNS的ip,10.96.0.10

/uploads/answer/20201029/bfc911d77ebecf720d2b2b033bae3d6c.png

修改一个pod的yaml (deployments )


kubectl edit deployments kube-state-metrics -n kube-system

批量删除NCC的镜像(批量重启)


kubectl get pod -n c87e2267-1001-4c70-bb2a-ab41f3b81aa3 |tail -n +2 | awk '{print $1}' | xargs kubectl delete pod -n c87e2267-1001-4c70-bb2a-ab41f3b81aa3

要回复问题请先登录注册