Oracle Kubernetes 1.22 单机部署中文指南

Oracle Kubernetes 1.22 单机部署中文指南

背景与核心痛点:在企业级 Oracle Linux 环境下,通过 kubeadm 从零手动搭建 Kubernetes 单节点/主从集群往往涉及繁琐的底层环境调优。从关闭 Swap、配置 iptables 转发与 SELinux 放行,到集成 Docker/containerd 运行时、初始化 kubeadm 控制平面、部署 Calico/Flannel CNI 网络插件,以及集成官方 Kubernetes Dashboard 与 Harbor 企业镜像仓库,本文提供经生产验证的完整中文实操闭环指南。

目录

Oracle Linux 基础环境初始化

1. 修改主机名与网络转发

hostnamectl set-hostname k8s-master
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.max_map_count = 262144
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

2. 永久关闭 Swap 分区

swapoff -a
sed -i "/ swap / s/^\(.*\)$/#\1/g" /etc/fstab

3. 放行防火墙与 SELinux

setenforce 0
sed -i "s/^SELINUX=enforcing$/SELINUX=permissive/" /etc/selinux/config

容器运行时 Docker 与 Cgroup 配置

  1. 添加 Docker 官方 Yum 镜像源并安装核心组件:
    yum install -y yum-utils
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum install -y docker-ce docker-ce-cli containerd.io
    
  2. 配置 Docker Cgroup 驱动为 systemd(K8s 强推荐):
    {
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": { "max-size": "100m" },
      "storage-driver": "overlay2"
    }
    
    保存至 /etc/docker/daemon.json 并重启 Docker:
    systemctl daemon-reload && systemctl restart docker
    

使用 kubeadm 初始化 Kubernetes 单节点集群

1. 安装 kubeadm, kubelet, kubectl

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF
yum install -y kubelet-1.22.0 kubeadm-1.22.0 kubectl-1.22.0 --disableexcludes=kubernetes
systemctl enable --now kubelet

2. 执行 kubeadm 初始化

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

3. 去除 Master 污点(单节点必做)

允许 Pod 调度到单机 Master 节点上运行:

kubectl taint nodes --all node-role.kubernetes.io/master-

部署官方 Dashboard 与管理员授权

  1. 部署官方 Web UI 资源清单:
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
    
  2. 创建 admin-user 服务账户并绑定 cluster-admin 超级管理角色。
  3. 获取登录 Token 即可在浏览器通过安全代理访问控制台。

企业级 Harbor 私有镜像仓库部署

使用 Helm 部署 Harbor 镜像仓库:

  • 配置 Ingress 自动绑定泛域名证书。
  • 后端数据目录挂载本地存储 local-path 或 NFS 持久卷。
  • 为 Docker 守护进程配置私有仓库登录信任与证书挂载。

高频部署故障与证书排查要点

  • cert-manager 证书无法处于 Ready 状态:在 Ingress 注解中必须显式声明:
    cert-manager.io/issue-temporary-certificate: "true"
    acme.cert-manager.io/http01-edit-in-place: "true"
    
  • Kubelet 启动报 cgroup 冲突:严格保证 Docker daemon 与 Kubelet 配置一致使用 systemd。