systemctl stop firewalld/ufw disable)、SELinux(setenforce 0并修改/etc/selinux/config为permissive);禁用Swap(swapoff -a并注释/etc/fstab中的Swap行)。/etc/hosts中添加主机名与IP对应关系(如192.168.1.100 k8s-master),并通过hostnamectl set-hostname设置主机名。Kubernetes依赖Docker运行容器,安装步骤如下(以CentOS为例):
yum remove -y docker docker-client docker-engine;yum install -y yum-utils device-mapper-persistent-data lvm2;yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo;yum install -y docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io;systemctl enable --now docker;docker run hello-world。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=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 kubeadm kubectl --disableexcludes=kubernetes;systemctl enable --now kubelet。在Master节点上执行以下命令初始化集群(以CentOS为例):
kubeadm init \
--apiserver-advertise-address=<Master-IP> \ # 替换为Master节点IP
--pod-network-cidr=10.244.0.0/16 \ # 指定Pod网络CIDR(需与网络插件匹配)
--image-repository registry.aliyuncs.com/google_containers # 使用国内镜像加速
kubeadm join命令(包含token和CA证书哈希),务必保存,用于后续加入Worker节点。mkdir -p $HOME/.kube;sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config;sudo chown $(id -u):$(id -g) $HOME/.kube/config;kubectl version(需显示客户端与服务端版本)。Kubernetes需要网络插件实现Pod间通信,常用插件如Calico、Flannel。以Calico为例:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl get pods -n kube-system(所有Pod应为Running状态)。在每台Worker节点上执行Master节点初始化时输出的kubeadm join命令(例如):
sudo kubeadm join 192.168.1.100:6443 \
--token abcdef.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
在Master节点上运行以下命令,检查节点状态:
kubectl get nodes
Ready,则表示集群搭建成功。helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/;helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --namespace kubernetes-dashboard;kubectl create serviceaccount dashboard-admin-sa,并为其绑定ClusterRole;kubectl proxy,然后在浏览器访问http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/。