Linux运维工程师面试题?
1.如何使用K8S进行监控和日志管理?
- 部署监控工具:可以使用Prometheus、Grafana、Heapster等工具来监控Kubernetes集群的状态和性能指标,其中Prometheus可以通过Kubernetes Operator自动化部署。
- 配置监控数据源:将需要监控的组件或服务的数据源配置到监控工具中,例如Prometheus需要配置exporter来获取数据源。
- 创建Dashboard:使用Grafana创建监控Dashboard以可视化监控数据。
- 部署日志收集器:可以使用Fluentd、Logstash等工具来收集Kubernetes集群中的日志,并将其发送到中央日志存储系统,如Elasticsearch、Kibana等。
- 配置日志收集器:将需要收集的Pod或容器的日志配置到日志收集器中,例如Fluentd可以通过DaemonSet方式在Kubernetes集群的每个节点上运行。
- 可视化日志:使用Kibana或其他工具查看和分析收集到的日志数据。
2.如何使用K8S进行服务发现和负载均衡?
- Kubernetes Service:Kubernetes Service是一种抽象的方法,它封装了一个或多个Pod,并提供了一个固定的IP地址和端口,让其他的组件可以通过该IP地址和端口访问这些Pod。Service支持四种类型的负载均衡方式,分别是ClusterIP、NodePort、LoadBalancer、ExternalName。
- Kubernetes Ingress:Kubernetes Ingress是一个抽象层,它定义了如何将进入集群的HTTP(S)流量路由到Service。Ingress控制器可以实现多个Ingress规则,每个规则定义了到达的流量的协议、主机、路径等属性,每个规则又可以匹配多个后端Service,实现了服务发现和负载均衡的功能。
- Kubernetes DNS:Kubernetes中内置了一个DNS服务,它允许在Pod之间使用域名而不是IP地址进行通信。当创建一个Service时,Kubernetes会自动在DNS中注册该Service的名称解析,所有访问该Service的Pod都会通过DNS解析得到该Service的IP地址。
3.如何使用K8S进行存储管理和网络管理?
- 存储管理:Kubernetes支持多种存储类型,包括本地存储、网络存储(NFS、iSCSI、Ceph等)、云盘存储(AWS EBS、GCP Persistent Disk等)等。可以使用Kubernetes的Volume对象来定义这些存储类型。同时,还可以使用StatefulSet对象来管理有状态应用的存储需求,保证Pod的稳定性和数据的可靠性。
- 网络管理:Kubernetes中使用CNI(Container Network Interface)插件来实现容器网络与宿主机网络的连接,从而实现容器之间的通信。Kubernetes内置了多种CNI插件,包括Flannel、Calico、Weave Net等,用户可以根据需要选择适合自己的CNI插件。此外,Kubernetes还支持网络策略(Network Policy),可以通过定义网络策略来限制Pod之间的网络访问,加强网络安全性。
4.在Linux系统中如何禁止root用户登录?
可以通过修改 SSH 配置文件来禁止 root 用户登录。具体操作如下:
- 打开 SSH 配置文件 /etc/ssh/sshd_config。
- 找到 PermitRootLogin 选项,并将其值改为 no,如下所示:
PermitRootLogin no
- 保存文件并退出。
- 重启 SSH 服务,以使配置生效。在大多数 Linux 发行版中,可以使用以下命令重启 SSH 服务:
systemctl restart sshd
如果想要允许某些用户以 root 权限登录,可以在 SSH 配置文件中指定这些用户的用户名,如下所示:
AllowUsers user1 user2
其中,user1 和 user2 分别是允许登录的用户名。修改完成后,同样需要重启 SSH 服务才能使配置生效。请注意,在进行修改配置文件前,建议先备份原有配置文件,以便出现问题时可以及时恢复。