当前位置:首页>Linux>手把手从零搭建:Linux 运维核心组件实操手册(含 BIND/Docker/K8s 详细配置)

手把手从零搭建:Linux 运维核心组件实操手册(含 BIND/Docker/K8s 详细配置)

  • 2026-09-02 19:14:19
手把手从零搭建:Linux 运维核心组件实操手册(含 BIND/Docker/K8s 详细配置)

一、 基础服务篇:DNS 与 Web 的基石

在云原生时代,虽然很多基础服务被托管了,但理解 BIND 和 Apache 的配置,依然是排查网络问题的“基本功”。

1. BIND:掌控域名解析的核心

DNS 配置最怕的是语法错误。请严格按照以下步骤操作:

安装与启动

#安装 BIND 及工具包 dnf install -y bind bind-utils # 启动并设置开机自启 systemctl enable --now named # 防火墙放行 firewall-cmd --add-service=dns --permanent firewall-cmd --reload
核心配置:/etc/named.conf

注意:listen-on 和 allow-query 的 IP 地址请根据你的实际网段修改。

options {      listen-on port 53 { 10.0.0.3; }; #本机IP      directory       "/var/named";      allow-query     { 10.0.0.0/24; }; # 允许查询的网段      recursion yes; # 开启递归查询}; # 包含反向解析配置文件 include "/etc/named.rfc1912.zones";

正向解析文件:/var/named/named.test.com

$TTL 1D @   IN SOA  @ rname.invalid. ( 0 1D 1H 1W 3H )     NS      ns.test.com. ns  A       10.0.0.3 www A       10.0.0.3 #域名指向

验证命令

#检查配置文件语法 named-checkconf named-checkzone test.com /var/named/named.test.com # 测试解析 nslookup www.test.com 10.0.0.3

Apache:多虚拟主机配置

基于域名的虚拟主机是企业级应用的标配。

创建站点目录

mkdir -p /var/www/site{1,2} 
echo '<h1>Welcome to Site1</h1>' > /var/www/site1/index.html 
echo '<h1>Welcome to Site2</h1>' > /var/www/site2/index.html

配置文件:/etc/httpd/conf.d/vhosts.conf

<VirtualHost *:80>      ServerName site1.test.com      DocumentRoot /var/www/site1      ErrorLog /var/log/httpd/site1_error.log      CustomLog /var/log/httpd/site1_access.log combined </VirtualHost> <VirtualHost *:80>      ServerName site2.test.com      DocumentRoot /var/www/site2      ErrorLog /var/log/httpd/site2_error.log      CustomLog /var/log/httpd/site2_access.log combined </VirtualHost> #目录权限控制 <Directory "/var/www/site1">      Require all granted</Directory>

配置完成后执行systemctl restart httpd。

二、 数据库与容器化:MySQL 与 Docker

数据安全是底线,容器化是效率的起点。

1. MySQL 8.0 初始化与备份

MySQL 8.0 的密码策略和备份恢复是运维的高频操作。

初始化安全设置

#1. 查看临时密码 grep 'temporary password' /var/log/mysqld.log # 2. 登录并修改密码(注意:8.0默认密码策略较严) mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass!123'; FLUSH PRIVILEGES;

全量备份与增量恢复

全量备份是底线,Binlog 是救命稻草。

#全量备份(记得提前创建 /backup 目录) mysqldump -u root -p --all-databases > /backup/all_$(date +%F).sql # 增量备份(基于 Binlog) # 1. 确认 Binlog 开启 mysql -e "SHOW VARIABLES LIKE 'log_bin';"  # 2. 刷新日志(产生新的 binlog 文件)  mysql -e "FLUSH LOGS;"   # 3. 解析 Binlog 进行恢复(例如恢复误删的数据)  mysqlbinlog /var/lib/mysql/mysql-bin.000002 | mysql -u root -p

2. Docker 一键部署监控栈

利用 Docker Compose 快速搭建 LAMP/LNMP 环境。

docker-compose.yml核心配置

version: '3.8' services:  nginx:      image:nginx:latest       ports:        - "80:80"       volumes:        - ./conf.d:/etc/nginx/conf.d       depends_on:             - php-fpm      php-fpm:       image: php:7.4-fpm       environment:         - MYSQL_HOST=db  db:       image: mysql:5.7       environment:         MYSQL_ROOT_PASSWORD: example

启动命令:docker-compose up -d

三、 进阶实战:K8s 集群搭建避坑指南

K8s 搭建最怕环境不一致。请严格按照以下环境准备步骤操作,否则kubeadm init必报错。

1. 环境初始化(Master & Node 节点均需执行)

关闭防火墙与 Swap(K8s 强制要求)

#关闭防火墙(或配置复杂规则,初学者建议关闭) systemctl stop firewalld systemctl disable firewalld # 关闭 Swap(不关闭 Kubelet 会报错) swapoff -a sed -i '/ swap / s/^(.*)$/#\1/g' /etc/fstab # 关闭 SELinux setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

配置内核参数

cat <<EOF | tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF modprobe overlay modprobe br_netfilter cat <<EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables  = 1 net.ipv4.ip_forward                 = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sysctl --system

2. 容器运行时:Containerd 配置

K8s 1.24+ 版本移除了 Docker-shim,推荐直接使用 Containerd。

安装 Containerd

#配置 yum 源(CentOS) yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y containerd.io # 生成默认配置 mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml # 修改配置文件:将 SystemdCgroup = false 改为 true(适配 K8s) sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml systemctl enable --now containerd

K8s 集群初始化

安装 Kubeadm/Kubelet

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 systemctl enable --now kubelet

Master 节点初始化

注意:--image-repository 指定了阿里云镜像源,防止拉取不到官方镜像。

kubeadm init \   --apiserver-advertise-address=10.0.0.3 \   --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.24.1 \ --service-cidr=10.96.0.0/12 \   --pod-network-cidr=10.244.0.0/16

安装网络插件(Calico)

#下载官方 YAML 并应用 wget https://docs.projectcalico.org/manifests/calico.yaml kubectl apply -f calico.yaml

四、 监控体系:Zabbix + Grafana

一个没有监控的系统是裸奔的。

1. Zabbix Agent 部署

配置文件:/etc/zabbix/zabbix_agentd.conf

Server=10.0.0.3          #Zabbix Server IP ServerActive=10.0.0.3    # 主动式上报地址 Hostname=my-agent        # 必须与 Web 界面添加主机时的 "主机名称" 一致

2. Grafana 数据可视化

安装与插件

#安装 Grafana dnf install -y grafana # 安装 Zabbix 插件(关键步骤,否则无法直接读 Zabbix 数据) grafana-cli plugins install alexanderzobnin-zabbix-app systemctl enable --now grafana-server

访问http://服务器IP:3000,默认账号密码admin/admin。

最新文章

随机文章