查看某个pod的信息
kubectl -n ${namespace} describe pod ${podName}
查看pods详细信息
kubectl get pods -n namespace -o wide
#kubectl patch:使用补丁修改、更新某个资源的字段,比如更新某个node
kubectl patch node/node-0 -p ‘{“spec”:{“unschedulable”:true}}’
kubectl logs查最后10条最新日志命令
kubectl logs --tail=10 kube-proxy-2dfdf5 -n kube-system
kubectl logs -f kube-proxy-2dfdf5 -n kube-system
进入POD内部
kubectl exec -it change-1124521512-pmnls /bin/bash
查看集群健康状态
kubectl get cs
kubectl cluster-info 查看集群信息
kubectl version 显示命令行和kube服务端的版本
kubectl api-versions 显示支持的api版本集合
kubectl config view 显示当前kubectl的配置信息
k8s 组件
组成:
Master节点:
kubectl:客户端命令行工具,作为整个系统的操作入口。
kube-apiserver:以 REST API 服务形式提供接口,作为整个系统的控制入口。接收命令并保存etcd
kube-controller-manager:控制器,包括deployment、sts控制器等。负责维护集群的状态并执行整个系统的后台任务
kube-scheduler:负责资源的调度,接收来自 kube-apiserver 创建 Pods 任务,并分配到某个节点。
etcd:负责节点间的服务发现和配置共享。
Node节点:
kube-proxy:运行在每个计算节点上,负责 Pod 网络代理。定时从 etcd 获取到 service 信息来做相应的策略。
kubelet:运行在每个计算节点上,作为 node上的代理agent,接收分配该节点的 Pods 任务及管理容器,周期性获取容器状态,反馈给 kube-apiserver。
dns:负责为整个集群提供dns服务
ingress dashboard flannel(集群间的网络)
k8s网络
Pod 到 Pod(同一节点)
通信流程:
Pod A(10.244.1.2)要发送数据包给同节点的 Pod B(10.244.1.3)。
数据包从 Pod A 的 eth0 出来,通过虚拟以太网线(网线 一头连接pod一头连接网桥)到达网桥 。
网桥发现目标 Pod B 也连接在自己身上,于是直接将数据包转发给 Pod B 对应的虚拟网络设备。
数据包到达 Pod B 的 eth0。
不同节点的pod通信:
1.Pod A 的 eth0 网卡将数据包发送给其默认网关,通过网络插件cni(如 Flannel Calico)建立隧道或者路由转发到目标节点
docker
网络:
安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host
1.Host 使用宿主机的网络
如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。(网络好,但隔离性差)
2.Bridge 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。(类似交换机)
容器使用独立network Namespace,并连接到docker0虚拟网卡(默认模式)。通过docker0网桥以及Iptables nat表配置与宿主机通信;bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。
3.None 该模式关闭了容器的网络功能。
4.Container 创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
新创建的容器和已经存在的一个容器共享一个Network Namespace,使用该容器的网络
Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络
如何规划一个k8s集群
- 与业务确认需求,明确资源归属;
- 资源规划,高可用,后续按需扩容
- 网络、存储
- 安全加固,权限、防火墙、组件安全配置等
- 运维组件:监控、日志、cicd。
主体:根据业务需求出发,明确业务需要跑什么业务,体量多少。再依次落地资源、架构、网络、存储、安全、配套的监控、日志cicd等,然后需要自行跑通demo,验证可行性,再交付给业务。
ai在运维领域能做什么
- 异常检测与预警,基于监控指标、提前预测运维风险
- 知识图谱关联指标、日志、拓扑数据,快速定位故障源头。
- 资源系统,根据问题快速解决,比如扩缩容、清理日志&重启等
- 智能运维助手(很多开源工具,通过自然语言转换为运维操作,chatops,协助研发&运维作为知识库查询)