云上攻防(一)-K8S集群搭建
字数 1078 2025-08-23 18:31:17

Kubernetes (K8S) 集群搭建与配置指南

一、环境准备

1.1 系统要求

  • 操作系统:CentOS 7.0
  • 镜像下载地址:阿里云开源镜像站
  • 节点规划:
    • Master节点:192.168.108.100
    • Node01节点:192.168.108.101
    • Node02节点:192.168.108.102

1.2 基础配置

1.2.1 主机名解析配置

编辑/etc/hosts文件,添加以下内容:

192.168.108.100 master
192.168.108.101 node01
192.168.108.102 node02

操作步骤:

su root  # 切换到root权限
vi /etc/hosts  # 编辑文件
# 按i进入插入模式,添加内容后按Esc,输入:wq保存退出

1.2.2 时间同步

systemctl start chronyd
systemctl enable chronyd
date  # 验证时间

二、系统优化配置

2.1 禁用防火墙和iptables

systemctl stop firewalld
systemctl disable firewalld

2.2 禁用SELinux

# 永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 临时关闭
setenforce 0

2.3 禁用Swap分区

# 临时关闭
swapoff -a
# 永久关闭
vim /etc/fstab  # 注释掉swap相关行

2.4 修改内核参数

编辑/etc/sysctl.d/kubernetes.conf,添加:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

应用配置:

sysctl -p
modprobe br_netfilter
lsmod | grep br_netfilter  # 验证是否加载成功

2.5 配置IPVS功能

yum install ipset ipvsadmin -y

cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

chmod +x /etc/sysconfig/modules/ipvs.modules
/bin/bash /etc/sysconfig/modules/ipvs.modules
lsmod | grep -e ip_vs -e nf_conntrack_ipv4  # 验证

完成以上配置后重启服务器:

reboot

三、Docker安装与配置

3.1 安装Docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

3.2 配置Docker

mkdir /etc/docker

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

3.3 启动Docker

systemctl enable docker && systemctl start docker

四、Kubernetes组件安装

4.1 配置Kubernetes源

vim /etc/yum.repos.d/kubernetes.repo

添加以下内容:

[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

4.2 安装Kubernetes组件

yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y

4.3 配置kubelet

vim /etc/sysconfig/kubelet

添加:

KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

五、集群初始化

5.1 Master节点初始化

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

5.2 配置kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

5.3 Node节点加入集群

在Node节点上执行Master初始化后输出的join命令,例如:

kubeadm join 192.168.108.100:6443 --token xxxxxx.xxxxxxxxxxxx \
  --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

如果遇到问题,可以先执行:

kubeadm reset

六、网络插件配置

6.1 下载Flannel

下载地址:Flannel releases

6.2 加载Flannel镜像

docker load < flanneld-v0.13.0-amd64.docker

6.3 部署Flannel服务

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml

6.4 验证节点状态

kubectl get nodes
# 等待几分钟让状态变为Ready

七、集群功能验证

7.1 创建Deployment

kubectl create deployment nginx --image=nginx:1.14-alpine
kubectl get deploy  # 查看部署状态

7.2 创建Service

kubectl expose deploy nginx --port=80 --target-port=80 --type=NodePort
kubectl get svc  # 查看服务状态

7.3 访问测试

通过Node节点的IP加上Service暴露的NodePort访问Nginx服务。

八、常用命令

8.1 基础命令

kubectl get pod  # 查看所有pod
kubectl get node  # 查看所有node
kubectl get pod <pod-name>  # 查看特定pod

8.2 详细信息查看

kubectl get pod <pod-name> -o json  # JSON格式输出
kubectl get pod <pod-name> -o yaml  # YAML格式输出
kubectl get pod <pod-name> -o wide  # 详细信息
kubectl describe pod <pod-name>  # 描述资源信息

8.3 进入Pod

kubectl exec -it <pod-name> -- /bin/sh

九、常见问题解决

9.1 节点无法加入集群

  • 检查token是否过期
  • 确保所有节点时间同步
  • 检查网络连通性

9.2 Pod状态异常

  • 检查网络插件是否正常运行
  • 查看Pod描述信息获取错误详情
kubectl describe pod <pod-name>

9.3 服务无法访问

  • 检查Service是否正确暴露端口
  • 确认Pod运行在哪个节点上
kubectl get pod <pod-name> -o json  # 查看hostIP

十、维护与重置

10.1 重置集群

kubeadm reset

10.2 删除资源

kubectl delete deployment <deployment-name>
kubectl delete svc <service-name>

通过以上步骤,您可以成功搭建一个功能完整的Kubernetes集群,并进行基本的应用部署和管理。在实际使用过程中,可能会遇到各种问题,建议参考Kubernetes官方文档和社区资源进行深入学习和故障排查。

Kubernetes (K8S) 集群搭建与配置指南 一、环境准备 1.1 系统要求 操作系统:CentOS 7.0 镜像下载地址: 阿里云开源镜像站 节点规划: Master节点:192.168.108.100 Node01节点:192.168.108.101 Node02节点:192.168.108.102 1.2 基础配置 1.2.1 主机名解析配置 编辑 /etc/hosts 文件,添加以下内容: 操作步骤: 1.2.2 时间同步 二、系统优化配置 2.1 禁用防火墙和iptables 2.2 禁用SELinux 2.3 禁用Swap分区 2.4 修改内核参数 编辑 /etc/sysctl.d/kubernetes.conf ,添加: 应用配置: 2.5 配置IPVS功能 完成以上配置后重启服务器: 三、Docker安装与配置 3.1 安装Docker 3.2 配置Docker 3.3 启动Docker 四、Kubernetes组件安装 4.1 配置Kubernetes源 添加以下内容: 4.2 安装Kubernetes组件 4.3 配置kubelet 添加: 五、集群初始化 5.1 Master节点初始化 5.2 配置kubectl 5.3 Node节点加入集群 在Node节点上执行Master初始化后输出的join命令,例如: 如果遇到问题,可以先执行: 六、网络插件配置 6.1 下载Flannel 下载地址: Flannel releases 6.2 加载Flannel镜像 6.3 部署Flannel服务 6.4 验证节点状态 七、集群功能验证 7.1 创建Deployment 7.2 创建Service 7.3 访问测试 通过Node节点的IP加上Service暴露的NodePort访问Nginx服务。 八、常用命令 8.1 基础命令 8.2 详细信息查看 8.3 进入Pod 九、常见问题解决 9.1 节点无法加入集群 检查token是否过期 确保所有节点时间同步 检查网络连通性 9.2 Pod状态异常 检查网络插件是否正常运行 查看Pod描述信息获取错误详情 9.3 服务无法访问 检查Service是否正确暴露端口 确认Pod运行在哪个节点上 十、维护与重置 10.1 重置集群 10.2 删除资源 通过以上步骤,您可以成功搭建一个功能完整的Kubernetes集群,并进行基本的应用部署和管理。在实际使用过程中,可能会遇到各种问题,建议参考Kubernetes官方文档和社区资源进行深入学习和故障排查。