在 CentOS 上安装 Kubernetes 的实操步骤
一 环境准备与前提条件
hostnamectl set-hostname <k8s-master|k8s-nodeX>ntpdate 同步时间。swapoff -a 并注释 /etc/fstab 中的 swap 行。/etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1modprobe br_netfilter && sysctl --system二 安装容器运行时 Docker
yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -y docker-ce docker-ce-cli containerd.iosystemctl start docker && systemctl enable docker/etc/docker/daemon.json 示例:
{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors": ["https://<你的加速器地址>"] }systemctl restart docker三 安装 Kubernetes 组件 kubeadm kubelet kubectl
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOFyum install -y kubelet kubeadm kubectl --disableexcludekubernetessystemctl enable --now kubelet/etc/sysconfig/kubelet 增加 KUBELET_EXTRA_ARGS="--fail-swap-on=false"(仅用于实验环境,生产请保持 Swap 关闭并正确配置 kubelet)。四 初始化控制平面 Master 节点
kubeadm init --apiserver-advertise-address <MASTER_IP> --image-repository registry.aliyuncs.com/google_containers --kubernetes-version <VERSION> --service-cidr 10.96.0.0/12 --pod-network-cidr 10.244.0.0/16--pod-network-cidr=192.168.0.0/16)mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl get nodes 应看到 Master 状态为 Readykubectl get pods -A 检查系统 Pod 均为 Running五 加入工作节点 Node 与验证
kubeadm token create --print-join-commandkubeadm join ... 命令sudo kubeadm join <MASTER_IP>:<PORT> --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>kubectl get nodes 应看到所有 Node 为 Readykubectl run nginx --image=nginx --port=80 --restart=Neverkubectl expose deployment nginx --type=NodePort --port=80http://<NODE_IP>:<NodePort> 验证 Nginx 页面可访问