1.什么是有状态服务,什么是无状态服务
一、什么是无状态服务(Stateless Service)?
无状态服务是指服务实例之间没有依赖关系,也不需要保存客户端的状态信息。每次请求都独立处理,服务器不记录任何会话或用户上下文。
在 Kubernetes 中的体现:
使用
Deployment控制器管理;Pod 可以被随意删除、重启、替换;
所有 Pod 提供相同的功能;
适合横向扩展,多个副本可以并行工作。
二、什么是有状态服务(Stateful Service)?
有状态服务是指服务实例之间存在顺序、唯一性标识和持久化状态的需求。每个 Pod 有唯一的网络标识,并且通常与特定的存储卷绑定。
在 Kubernetes 中的体现:
使用
StatefulSet控制器管理;每个 Pod 有稳定的主机名和序号(如 web-0, web-1, web-2);
每个 Pod 可绑定一个独立的 PersistentVolume;
启动和终止是有顺序的(有序部署、有序终止);
适合需要持久化存储、身份识别的应用。
2.什么是冗余
一、什么是冗余(Redundancy)?
冗余 是指在系统设计中,为了提高可靠性、容错性或可用性,有意重复某些关键组件或数据。即使某个部分发生故障,冗余机制也能确保系统继续正常运行。
二、常见的冗余类型
1. 硬件冗余
在服务器、网络设备、存储等硬件层面部署多个备份。
示例:
多块硬盘做 RAID 提高存储可靠性;
双电源、双网卡提升服务器稳定性;
多台服务器负载均衡,防止单点故障。
2. 数据冗余
数据在多个节点上备份,防止数据丢失。
示例:
数据库主从复制(如 MySQL 主从、PostgreSQL 流复制);
分布式文件系统(如 HDFS、Ceph)自动保存多份副本;
Kubernetes 中的
PersistentVolume+StatefulSet实现有状态服务的数据冗余。
3. 服务冗余
同一个服务部署多个实例,通过负载均衡对外提供服务。
示例:
使用 Kubernetes 的
Deployment部署多个 Pod;使用 Nginx 或 HAProxy 做反向代理和负载均衡;
微服务架构中使用服务注册与发现机制(如 Nacos、Consul)实现高可用。
4. 网络冗余
多条网络路径或多个网络接口,防止网络中断。
示例:
多个交换机互连;
网络链路聚合(Bonding);
使用 Kubernetes 的 CNI 插件(如 Calico、Cilium)构建高可用网络。
三、冗余的作用
3.在k8s中无状态服务的冗余如何实现
在 Kubernetes(k8s)中,无状态服务的冗余主要通过 Deployment 控制器 和 副本机制(Replica) 实现。其核心目标是确保服务具备高可用性,即使某个 Pod 出现故障,也能自动恢复并保持服务正常运行。
4.kubectl create中的--dry-run=client有什么作用,用于什么场景
kubectl create 命令中的 --dry-run=client 是一个非常有用的参数,它的作用是模拟执行命令,但不真正提交到 Kubernetes 集群中。可以通过在后面加入-o yaml来生成示例yaml文件。
5.Deployment的主要功能是什么,解决了什么问题
Deployment 是 Kubernetes 中用于管理无状态服务(Stateless Service) 的控制器,它的核心作用是:确保指定数量的 Pod 副本始终处于运行状态,并支持滚动更新和回滚,解决了应用部署不稳定、版本更新中断、Pod 异常后无法自动恢复等问题。
6.Deployment其后端调用的那个服务
Deployment 是 Kubernetes 中用于管理无状态服务(Stateless Service) 的控制器,它本身并不直接“调用”某个后端服务,而是通常配合 Service 使用。真正用于暴露服务、供客户端或其它服务访问的是 Service 资源。
7.什么是滚动更新,默认值是多少,如何设置如果使用Deployment启动了多个Pod,那么S其他服务是否需要挨个访问其ip或域名?有什么更好的方法
9.什么是Service,其主要功能是什么
在 Kubernetes 中,Service 是一种抽象资源,用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个统一的访问入口(IP 和端口),并实现请求的负载均衡。即使 Pod 被删除、重建或调度到其他节点,Service 提供的 IP 和 DNS 名称保持不变,从而确保服务调用方无需关心后端 Pod 的具体位置和生命周期。
Service 是 Kubernetes 中用于实现服务发现、负载均衡和稳定访问的核心机制,解决了 Pod 生命周期短暂、IP 不稳定的问题,是微服务架构中不可或缺的组件。
主要功能:
10.Service的底层使用的什么服务
Kubernetes 的 Service 底层依赖 kube-proxy + iptables/IPVS + Endpoints + CoreDNS 实现服务发现与负载均衡,使得服务调用方可以通过稳定 IP 和 DNS 名称访问一组 Pod。
11.Service有几种网络类型,区别是什么
12.endpoint是什么与service有什么关系
在 Kubernetes 中,Endpoint(端点) 是一个关键资源对象,它与 Service 有密切关系。理解它们之间的联系有助于你更好地掌握服务发现、负载均衡和网络通信机制。
一、什么是 Endpoint?
Endpoint 是 Kubernetes 中用于记录一组 Pod 的 IP 地址和端口 的资源。它是 Service 实现负载均衡和访问路由的基础。
每个 Service 都会自动创建一个同名的 Endpoint;
Endpoint 包含了所有匹配该 Service
selector的 Pod 的真实地址(IP + Port);当 Pod 被删除或新建时,Kubernetes 控制器会自动更新对应的 Endpoint。
二、Service 和 Endpoint 的关系
13.BusyBox在K8s中有什么作用
BusyBox 是 Kubernetes 中用于调试网络、测试 DNS、验证存储挂载等操作的“瑞士军刀”,是运维人员排查问题时的必备工具。
14.创建一个Deployment,启动多副本Nginx,并为其设置ClusterlP类型的Service,使用busybox访问此Service验证是否能够访问到所有Nginx副本
Deplayment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80Service:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIPbusybox:
apiVersion: v1
kind: Pod
metadata:
name: busybox
spec:
containers:
- name: busybox
image: busybox
command:
- sh
- -c
- |
while true; do
wget -qO- http://nginx-service.default.svc.cluster.local
echo "----------------------"
sleep 1
done
15.设置kubectl别名为k,并配置命令自动补全
设置别名
alias k='kubectl'加载脚本
source <(kubectl completion bash)绑定补全
complete -o default -F __start_kubectl k加载配置
source ~/.bashrc