当前位置: 首页 > news >正文

运维面试题

近期的一些实习面试总结,希望对大家有所帮助,找到心仪工作!!!可能不是特别完美,只总结了好记常见的。

 

Linux系统命令

一.查看内存使用情况

1.使用free命令

free 命令是Linux系统中最简单和最常用的内存查看命令


$ free -mtotal        used        free      shared  buff/cache   available
Mem:           7822         321         324         377        7175        6795
Swap:          4096           0        4095$ free -htotal        used        free      shared  buff/cache   available
Mem:           7.6G        322M        324M        377M        7.0G        6.6G
Swap:          4.0G        724K        4.0G

其中, -m 选项是以MB为单位来展示内存使用信息; -h 选项则是以人类(human)可读的单位来展示。
上面的示例中, Mem: 这一行:
• total 表示总共有 7822MB 的物理内存(RAM),即7.6G。
• used 表示物理内存的使用量,大约是 322M。
• free 表示空闲内存;
• shared 表示共享内存?;
• buff/cache 表示缓存和缓冲内存量; Linux 系统会将很多东西缓存起来以提高性能,这部分内存可以在必要时进行释放,给其他程序使用。
• available 表示可用内存;
输出结果很容易理解。 Swap 这一行表示交换内存,从示例中的数字可以看到,基本上没使用到交换内存。

2.使用 top 命令


top 命令一般用于查看进程的CPU和内存使用情况;当然也会报告内存总量,以及内存使用情况,所以可用来监控物理内存的使用情况。
在输出信息的顶部展示了汇总信息。

top - 15:20:30 up  6:57,  5 users,  load average: 0.64, 0.44, 0.33
Tasks: 265 total,   1 running, 263 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.8 us,  2.4 sy,  0.0 ni, 88.9 id,  0.9 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   8167848 total,  6642360 used,  1525488 free,  1026876 buffers
KiB Swap:  1998844 total,        0 used,  1998844 free,  2138148 cachedPID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                                 2986 enlighte  20   0  584m  42m  26m S  14.3  0.5   0:44.27 yakuake                                                                                 1305 root      20   0  448m  68m  39m S   5.0  0.9   3:33.98 Xorg                                                                                    7701 enlighte  20   0  424m  17m  10m S   4.0  0.2   0:00.12 kio_thumbnail

各种操作系统提供的参数略有不同,一般来说都可以根据CPU和内存来排序。
例如:

# CentOS
top -o %MEM
top -o %CPU# mac
top -o mem
top -o cpu

碰到不清楚的,请使用 top -h 查看帮助信息。
重点关注顶部的 KiB Mem 和 KiB Swap 这两行。 表示内存的总量、使用量,以及可用量。
buffer 和 cache 部分,和 free 命令展示的差不多。

3.使用ps命令

ps命令可以显示系统中运行的进程的信息,包括进程的内存使用情况。

运行命令”ps aux”可以显示所有进程的详细信息,包括进程的虚拟内存大小、物理内存大小等。

export "PS1=$ "
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0   1136     4 ?        Ss   07:00   0:00 /sbin/docker-
root           7 20.6  0.1 3557184 171728 ?      Rl   07:00  11:42 --CODING GROU
root          27  0.0  0.0   6644  3808 pts/0    Ss+  07:00   0:00 su codeuser10

4.使用sar命令

sar命令可以用来查看系统的性能统计信息,包括内存使用情况。

运行命令”sar -r”可以显示系统的内存使用情况以及内存交换的情况。

二.Linux测试连通性

1)如何测试虚拟机网络连接:


检查虚拟机配置、使用ping命令、验证DNS解析、测试端口连通性、监控网络流量。其中,使用ping命令是最基础也是最常用的方法。通过ping命令,可以验证虚拟机是否能够与目标主机建立基本的网络连接。具体来说,通过在虚拟机的命令行中输入ping命令并跟随目标主机的IP地址或域名,可以得到目标主机是否可达的反馈信息,包括响应时间和丢包率。

IP地址是网络通信的基础。检查虚拟机是否正确获取了IP地址。可以在虚拟机的命令行中使用ipconfig(Windows)或ifconfig(Linux)命令查看当前的IP地址。

2)网络适配器

虚拟机的网络适配器设置会影响其网络连接情况。常见的网络适配器类型包括桥接模式、NAT模式和仅主机模式。

  • 桥接模式:虚拟机的网络适配器直接连接到物理网络,虚拟机会获得与物理机同一网段的IP地址。
  • NAT模式:虚拟机通过虚拟网络地址转换 (NAT) 功能与外部网络通信,虚拟机的IP地址由虚拟机管理程序分配。
  • 仅主机模式:虚拟机只能与主机通信,不能与外部网络通信。

3)相关指令

1.使用ping命令

 ping命令是测试网络连接最基础的方法。通过ping命令,可以验证虚拟机是否能够与目标主机建立基本的网络连接。

2. 使用nslookup命令

在虚拟机的命令行中,输入nslookup命令并跟随域名。例如:

nslookup www.google.com

nslookup命令会显示域名对应的IP地址和DNS服务器的信息。

3.使用telnet命令

telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议和主要方式。
它为用户提供了在本地计算机上完成远程主机工作的能力。因此可以使用telnet 来测试远程机器的连通性。

4.使用curl命令


curl 是利用 URL 语法在命令行方式下工作的开源文件传输工具。也可以用来测试端口的连通性。 适合验证第三方提供的地址是否可以连通

5.使用netstat命令


利用 netstat 指令可让你得知整个 Linux 系统的网络情况。

三.Linux磁盘操作:分区、格式化、挂载

1.磁盘分区的基础概念


• 物理磁盘与逻辑分区:物理磁盘(如硬盘 HDD、固态硬盘 SSD)是存储的硬件载体,而分区是在物理磁盘上划分的 “逻辑容器”,每个分区可独立格式化、挂载和使用。
• 分区表:磁盘的第一个扇区(或特定区域)会存储 “分区表”,用于记录分区的数量、位置、大小等信息。操作系统通过分区表识别和管理分区。


2.磁盘分区工具


Linux 提供了多种分区工具,分为命令行和图形化两类,适用于不同操作场景:


1)命令行工具(推荐服务器 / 高效操作)


• fdisk:支持 MBR 和 GPT 分区表,适合小容量磁盘(≤2TB),操作简单。
示例:对sda磁盘分区:fdisk /dev/sda(进入交互模式,可创建、删除、查看分区)。
• parted:支持 MBR 和 GPT,可处理大容量磁盘(>2TB),支持动态调整分区大小(部分文件系统)。
示例:对sda磁盘分区:parted /dev/sda(交互模式,支持更灵活的分区操作)。
• gdisk:专为 GPT 分区表设计,功能类似 fdisk,适合需要 GPT 的场景。


2)图形化工具(推荐桌面用户)


• GParted:跨平台图形化分区工具,支持鼠标操作,直观易用,适合新手。
安装:sudo apt install gparted(Debian/Ubuntu)或yum install gparted(CentOS)。

3.格式化

Linux 格式化即对分区初始化并创建文件系统,使其可被系统使用(会清除数据,务必备份)。

核心工具(按文件系统)

  • mkfs.ext4:常用,稳定支持日志(例:sudo mkfs.ext4 /dev/sda1
  • mkfs.xfs:高性能,适合大文件 / 高 I/O(加-f强制覆盖)
  • mkswap:初始化交换分区(需用swapon启用)
  • mkfs.vfat:跨系统兼容(适合移动设备)


4.分区的挂载与永久生效


分区创建并格式化后,需 “挂载” 到 Linux 目录树的某个目录(称为 “挂载点”)才能使用。


1) 临时挂载


通过mount命令临时挂载分区,重启后失效:

# 将/dev/sda1(分区)挂载到/mnt/mydata(挂载点,需提前创建)
sudo mount/dev/sda1 /mnt/mydata


2)永久挂载


通过/etc/fstab文件配置,实现开机自动挂载。格式如下:

# 设备路径  挂载点  文件系统类型  挂载选项  备份标记  自检顺序
/dev/sda1  /mnt/mydata  ext4  defaults  


• 设备路径也可用 UUID(分区唯一标识)代替(更稳定,避免设备名变动),UUID 可通过blkid命令查看。

四.Shell脚本

 

shell 脚本(Shell Script)是一种文本文件,包含一系列 Linux/Unix 命令的集合,由 shell 解释器(如 bash、sh、zsh 等)按顺序执行,用于自动化完成重复性任务、批量处理操作或组合复杂命令。


1.核心特点


• 文本文件:用普通文本编辑器编写,无需编译,直接由 shell 解析执行
• 命令组合:将多个 Linux 命令按逻辑(顺序、条件、循环)组织
• 自动化工具:替代手动输入命令,提高效率,减少人为错误
• 跨平台性:在支持 shell 的系统(Linux、macOS、Unix)上通用


2.基本结构

 1. 开头声明解释器(首行):#!/bin/bash(指定用 bash 执行)
2. 注释:以#开头(除首行#!外),说明脚本功能
3. 命令 / 逻辑语句:包括 Linux 命令、变量、条件判断(if)、循环(for/while)等

##数据库备份脚本#!/bin/bash# 配置信息(修改为你的数据库信息)
DB_USER="root"
DB_PASS="密码"
DB_NAME="数据库名"
BACKUP_DIR="./backups"  # 备份存放目录# 创建备份目录
mkdir -p $BACKUP_DIR# 备份文件名(包含日期)
FILE="$BACKUP_DIR/${DB_NAME}_$(date +%Y%m%d).sql.gz"# 执行备份
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $FILE# 提示结果
if [ -f $FILE ]; thenecho "备份成功: $FILE"
elseecho "备份失败"
fi

执行方式

  1. 赋予执行权限:chmod +x script.sh
  2. 运行:./script.sh 或 bash script.sh

shell 脚本广泛用于系统管理、日志处理、自动化部署等场景,是 Linux 运维和开发的基础工具。

3.常用变量

1.自定义变量
name="value"(赋值),$name(使用)
2. 环境变量
$HOME(家目录)、$PWD(当前目录)、$USER(用户名)、$PATH(命令路径)
3. 位置参数
$0(脚本名)、$1-$n(参数 1 到 n)、$#(参数总数)、$*(所有参数)
4. 特殊变量
$?(上条命令结果,0 为成功)、$$(当前进程 ID)、$!(后台进程 ID)
5. 常用技巧
◦ 拼接:$a$b
◦ 命令结果:var=$(命令)
◦ 默认值:${var:-默认值}

五.Nginx详细参数

1.基本命令

nginx -t             检查配置文件是否有语法错误
nginx -s reload       热加载,重新加载配置文件
nginx -s stop         快速关闭
nginx -s quit         等待工作进程处理完成后关闭
复制代码

2.默认配置

Nginx 安装目录下, 我们复制一份`nginx.conf`成`nginx.conf.default`作为配置文件备份,然后修改`nginx.conf`
# 工作进程的数量
worker_processes  1;
events {worker_connections  1024; # 每个工作进程连接数
}http {include       mime.types;default_type  application/octet-stream;# 日志格式log_format  access  '$remote_addr - $remote_user [$time_local] $host "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" "$clientip"';access_log  /srv/log/nginx/access.log  access; # 日志输出目录gzip  on;sendfile  on;# 链接超时时间,自动断开keepalive_timeout  60;# 虚拟主机server {listen       8080;server_name  localhost; # 浏览器访问域名charset utf-8;access_log  logs/localhost.access.log  access;# 路由location / {root   www; # 访问根目录index  index.html index.htm; # 入口文件}}# 引入其他的配置文件include servers/*;
}

3.负载均衡

# 负载均衡配置示例
http {# 1. 定义后端服务器集群upstream backend_servers {# 策略1:轮询(默认,按顺序分发)server 192.168.1.101:8080;  # 后端服务器1server 192.168.1.102:8080;  # 后端服务器2# 策略2:权重(weight值越高,分配请求越多)# server 192.168.1.101:8080 weight=3;# server 192.168.1.102:8080 weight=1;# 策略3:IP哈希(同一IP固定访问同一服务器,解决会话保持)# ip_hash;# server 192.168.1.101:8080;# server 192.168.1.102:8080;# 可选配置server 192.168.1.103:8080 backup;  # 备份服务器(主服务器全宕机时启用)server 192.168.1.104:8080 down;    # 标记为不可用}# 2. 配置虚拟主机,将请求转发到集群server {listen 80;server_name example.com;  # 负载均衡入口域名location / {proxy_pass http://backend_servers;  # 转发到定义的集群# 可选:设置代理头信息(重要,后端服务器可获取真实客户端IP)proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}

六.Docker

1.Docker 常用指令

 

镜像管理
• docker pull <镜像名:标签>:拉取镜像(如 docker pull nginx:latest)
• docker images:列出本地所有镜像
• docker rmi <镜像ID/名称>:删除镜像(加 -f 强制删除)
• docker build -t <镜像名:标签> <Dockerfile路径>:构建镜像(如 docker build -t myapp:v1 .)
• docker tag <原镜像> <新镜像名:标签>:给镜像打标签
容器管理
• docker run [选项] <镜像>:创建并启动容器
常用选项:
-d 后台运行;-p 主机端口:容器端口 端口映射;-v 主机目录:容器目录 挂载目录;--name 容器名 指定名称
例:docker run -d -p 80:80 --name mynginx nginx
• docker ps:列出运行中的容器(加 -a 显示所有容器)
• docker start/stop/restart <容器ID/名称>:启动 / 停止 / 重启容器
• docker rm <容器ID/名称>:删除容器(加 -f 强制删除运行中的容器)
• docker exec -it <容器ID/名称> <命令>:进入容器执行命令(如 docker exec -it mynginx bash)
• docker logs <容器ID/名称>:查看容器日志(加 -f 实时跟踪)
其他常用
• docker info:查看 Docker 系统信息
• docker system prune:清理无用镜像、容器、网络(加 -a 清理更多)
• docker inspect <容器/镜像ID>:查看详细信息


2.Docker Compose 常用指令


(需在 docker-compose.yml 所在目录执行)
• docker-compose up:创建并启动所有服务(加 -d 后台运行)
• docker-compose down:停止并删除所有服务、网络(加 -v 同时删除挂载卷)
• docker-compose start/stop/restart [服务名]:启动 / 停止 / 重启指定服务(不加服务名则操作所有)
• docker-compose ps:列出所有服务容器状态
• docker-compose logs [服务名]:查看服务日志(加 -f 实时跟踪)
• docker-compose build [服务名]:构建指定服务的镜像(不加服务名则构建所有)
• docker-compose exec <服务名> <命令>:进入指定服务容器执行命令(如 docker-compose exec web bash)
说明
• Docker 指令操作单个容器 / 镜像,Docker Compose 基于配置文件批量管理多个服务
• 大部分指令可通过 -h 查看帮助(如 docker run -h、docker-compose up -h)

七.K8S

Kubernetes(简称 k8s)是用于自动化部署、扩展和管理容器化应用的开源平台,核心目标是实现容器集群的自动化运维。以下是核心知识点梳理(无表格形式):

1.核心概念与作用

  • 本质:容器编排平台,解决容器化应用的部署、扩缩容、负载均衡、自愈、滚动更新等问题。
  • 核心价值:自动化运维(减少人工操作)、高可用(故障自动恢复)、弹性伸缩(按需调整资源)、跨环境一致性(开发 / 测试 / 生产环境统一)。

2.核心架构组件

k8s 集群由控制平面(Control Plane) 和节点(Node) 组成:

控制平面组件(管理集群状态)

  • kube-apiserver:所有操作的统一入口(提供 REST API),负责认证、授权、数据校验,是集群各组件通信的枢纽。
  • etcd:集群数据的存储中心(分布式键值数据库),保存集群配置、资源状态等关键信息,具有高可用特性。
  • kube-scheduler:负责 Pod 的调度,根据 Pod 的资源需求、节点负载、亲和性规则等,选择最合适的节点运行 Pod。
  • kube-controller-manager:运行各种控制器进程,比如节点控制器(监控节点状态,节点故障时标记并处理)、Deployment 控制器(维持 Pod 副本数符合期望)等,确保集群状态与用户定义的 “期望状态” 一致。
  • cloud-controller-manager:可选组件,用于对接云厂商 API,将集群与云服务(如负载均衡、存储)集成,仅在云环境中使用。

节点组件(运行容器的工作节点)

  • kubelet:在每个节点上运行,与 apiserver 通信,确保容器按照 Pod 的定义(如镜像、资源限制)正确运行,并向控制平面汇报节点和 Pod 状态。
  • kube-proxy:维护节点上的网络规则,实现 Pod 之间、Pod 与外部的通信,以及 Service 的负载均衡(将请求转发到对应的 Pod)。
  • 容器运行时(如 containerd):负责实际运行容器的软件,是 k8s 的底层依赖,替代了早期的 docker-shim,支持 OCI 标准的容器引擎。

3.核心资源对象(k8s 中 “最小操作单元”)

  1. Pod
    最小部署单元,包含一个或多个紧密关联的容器(共享网络命名空间和存储)。生命周期短暂,重启后 IP 可能变化,因此通常不直接部署 Pod,而是通过控制器管理。

  2. Service
    为 Pod 提供稳定的访问入口(固定 IP 或域名),解决 Pod IP 动态变化的问题。通过 Label Selector 与 Pod 关联,自动实现负载均衡(默认轮询),外部可通过 Service 访问背后的 Pod 集群。

  3. Deployment
    最常用的控制器,用于管理无状态应用(如 Web 服务)。支持创建 Pod、滚动更新(更新时不中断服务)、回滚到历史版本、手动或自动扩缩容等功能,是部署无状态应用的首选。

  4. StatefulSet
    用于管理有状态应用(如数据库、分布式系统),确保 Pod 的名称、网络标识(DNS)、存储持久化(不随重启或重建变化),适合需要稳定身份和存储的场景。

  5. Namespace
    资源隔离机制,将集群划分为多个 “虚拟集群”,可用于区分开发、测试、生产等环境,或隔离不同团队的资源,避免命名冲突。

  6. ConfigMap/Secret
    用于管理应用配置:ConfigMap 存储明文配置(如应用参数、配置文件),Secret 存储敏感信息(如密码、证书、API 密钥),数据以 Base64 编码存储,两者都可挂载到 Pod 中供应用使用。

  7. Volume
    为 Pod 提供持久化存储(容器重启后数据不丢失),支持多种类型,如本地存储(emptyDir、hostPath)、网络存储(NFS、Ceph、云厂商存储服务等),可按需选择。

4.核心操作与命令(kubectl工具)

  • 查看资源
    kubectl get pods(查看运行中的 Pod)、kubectl get services(查看 Service)、kubectl get deployments(查看 Deployment),加-o wide可显示更多信息,加-n <命名空间>指定命名空间。

  • 创建资源
    kubectl apply -f xxx.yaml(通过 YAML 配置文件创建资源,推荐,支持更新);kubectl create deployment <名称> --image=<镜像>(快速创建 Deployment,适合测试)。

  • 查看详情
    kubectl describe pod <Pod名称>(查看 Pod 详细状态,包括事件、挂载、容器信息等,用于排障);kubectl logs <Pod名称>(查看 Pod 日志,加-f实时跟踪)。

  • 进入容器
    kubectl exec -it <Pod名称> -- /bin/bash(进入 Pod 中的容器,若 Pod 有多个容器,加-c <容器名>指定)。

  • 扩缩容
    kubectl scale deployment <Deployment名称> --replicas=3(将副本数调整为 3,实现扩缩容)。

  • 删除资源
    kubectl delete -f xxx.yaml(通过配置文件删除);kubectl delete pod <Pod名称>(直接删除 Pod,若由 Deployment 管理,会自动重建)。

  5.核心流程:应用部署到 k8s 的过程

  1. 编写 Deployment 配置文件,定义 Pod 模板(镜像、端口、资源限制等)、副本数、更新策略等。
  2. 通过kubectl apply -f deployment.yaml创建 Deployment,控制器会自动根据配置创建指定数量的 Pod,并确保其正常运行。
  3. 编写 Service 配置文件,通过 Label Selector 关联 Deployment 管理的 Pod,创建后 Service 会生成固定的访问 IP 或域名。
  4. 外部通过 Service 的 IP / 域名访问应用,k8s 会自动将请求转发到后端健康的 Pod,实现负载均衡;若 Pod 故障,控制器会自动重建,Service 会更新转发规则,保证服务可用性。

  6.进阶概念

  • Ingress:管理外部访问集群内服务的规则,支持 HTTP/HTTPS 路由、域名转发、SSL 终止等,需配合 Ingress Controller(如 nginx-ingress)使用,相当于集群的 “入口网关”。
  • RBAC:基于角色的访问控制,通过定义 “角色”(Role)和 “角色绑定”(RoleBinding),控制用户或组件对资源的操作权限(如限制开发人员只能操作 dev 命名空间的资源)。
  • HPA(Horizontal Pod Autoscaler):根据 CPU 使用率、内存使用率或自定义指标,自动调整 Deployment 的 Pod 副本数,实现弹性伸缩。
  • Operator:封装有状态应用的运维逻辑(如数据库备份、升级、故障恢复),通过自定义资源和控制器,将人工运维操作自动化,简化复杂应用的管理。

7.部署K8S(精简)

部署 Kubernetes(k8s)集群的步骤可分为环境准备、安装容器运行时、部署控制平面和节点加入等核心环节。以下是基于kubeadm工具的部署流程(单控制平面 + 多节点架构,适合学习和测试环境):

一、环境准备(所有节点执行)

1. 服务器要求

  • 操作系统:推荐 Ubuntu 20.04/22.04、CentOS 7/8 或 Rocky Linux

  • 硬件:控制平面至少 2 核 4G 内存,节点至少 1 核 2G 内存

  • 网络:所有节点互通,控制平面需开放 6443 端口,节点开放 10250 等端口

  • 禁用 Swap:sudo swapoff -a,并注释/etc/fstab中的 swap 分区(永久关闭)

2. 安装依赖

# 更新系统
sudo apt update && sudo apt upgrade -y  # Debian/Ubuntu
# 或
sudo yum update -y  # CentOS/RHEL# 安装容器依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common  # Debian/Ubuntu
# 或
sudo yum install -y curl policycoreutils openssh-server  # CentOS/RHEL

3. 配置内核参数(让 Linux 支持 k8s 网络)

# 添加内核模块
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFsudo modprobe overlay
sudo modprobe br_netfilter# 配置网络参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOFsudo sysctl --system  # 生效配置

二、安装容器运行时(所有节点执行)

k8s 需容器运行时(如 docker),以 docker 为例:

# 1. 安装Docker(已安装可跳过)
sudo apt update && sudo apt install -y docker.io  # Ubuntu/Debian
# 或
sudo yum install -y docker  # CentOS/RHEL# 启动Docker并设为开机自启
sudo systemctl start docker
sudo systemctl enable docker# 2. 关键配置:让Docker使用systemd作为cgroup驱动(K8s必须)
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF# 3. 重启Docker生效
sudo systemctl daemon-reload
sudo systemctl restart docker# 验证配置(输出应为 "Cgroup Driver: systemd")
docker info | grep -i "cgroup driver"

三、安装 kubeadm、kubelet、kubectl(所有节点执行)

这三个工具是部署 k8s 的核心组件:

  • kubeadm:初始化集群、加入节点的工具

  • kubelet:运行在所有节点上,管理容器生命周期

  • kubectl:集群命令行工具

# 添加k8s镜像源(国内可用阿里云镜像)
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -  # Debian/Ubuntu
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF# 安装组件(指定版本,避免自动升级)
sudo apt update
sudo apt install -y kubelet=1.26.0-00 kubeadm=1.26.0-00 kubectl=1.26.0-00# 冻结版本(防止意外升级)
sudo apt-mark hold kubelet kubeadm kubectl

四、初始化控制平面(仅在控制平面节点执行)

# 初始化集群(指定pod网络网段,后续需与网络插件一致)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \--image-repository registry.aliyuncs.com/google_containers  # 国内镜像源# 配置kubectl权限(当前用户)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

执行成功后,会输出 “节点加入集群” 的命令(含 token),保存备用。

五、安装网络插件(仅在控制平面执行)

k8s 需要网络插件实现 Pod 间通信,以flannel为例:

# 下载flannel配置并应用
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.20.2/Documentation/kube-flannel.yml# 检查节点状态(控制平面应变为Ready)
kubectl get nodes

六、添加工作节点(在工作节点执行)

使用初始化控制平面时输出的命令(类似如下,token 和 hash 需替换为实际值):

sudo kubeadm join 192.168.1.100:6443 \--token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:1234567890abcdef...

若忘记命令,可在控制平面生成新 token:

kubeadm token create --print-join-command  # 控制平面执行,生成新的加入命令

七、验证集群

在控制平面执行:

# 查看节点(所有节点状态应为Ready)
kubectl get nodes# 查看系统组件(所有Pod应正常运行)
kubectl get pods -n kube-system

 

 

http://www.dtcms.com/a/339789.html

相关文章:

  • LWIP协议栈实现ARP协议
  • 如何看出有没有做raid,并做的是raid几
  • 仲裁器设计(三)-- Weighted Round Robin 权重轮询调度
  • 信号以及共享内存
  • 设计模式笔记_行为型_命令模式
  • Pygame中,精灵Sprite与精灵组Group,显性入组与隐性入组,它们之间的关系是什么?
  • JB4-8-事务机制
  • 决策树学习总结
  • 在 IntelliJ IDEA 中修改 Git Commit 描述
  • Java秋招:高并发查询优化
  • 【学习】Linux 内核中的 cgroup freezer 子系统
  • 基于SpringBoot的高校心理教育辅导系统
  • 【python实用小脚本-190】Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队
  • Android Cordova 开发 - Cordova 嵌入 Android
  • 如何免费给视频加字幕
  • 【论文阅读】SIMBA: single-cell embedding along with features(1)
  • 当qtcpserver类对象释放时,该类下面的多个qtcpsocket连接会释放吗
  • 论文阅读系列(一)Qwen-Image Technical Report
  • IATF 16949认证是什么?
  • GaussianLSS
  • Java 并发同步工具类详解
  • WordPress 从删除文章后(清空回收站)保存被删除文章的链接到txt
  • 24.早期目标检测
  • Nacos-7--扩展一下:0-RTT和1-RTT怎么理解?
  • 【unitrix数间混合计算】3.2 非零标记trait(non_zero.rs)
  • JVM垃圾回收(GC)深度解析:原理、调优与问题排查
  • libvaapi,libva-utils源码获取并编译测试
  • 深入理解AQS:并发编程的基石
  • django生成迁移文件,执行生成到数据库
  • sfc_os!SfcValidateDLL函数分析之SfcGetValidationData