在你的 CentOS 7.6 云服务器上搭建 Kubernetes 集群(1 个 Master,2 个 Node),你可以使用 kubeadm 进行部署。以下是详细步骤:
1. 服务器环境准备
适用于 Master 和 Node 节点,所有节点均需执行:
1.1 更新系统并安装几个小工具
yum update -y && yum install -y vim && yum install -y wget && yum install -y bash-completion
1.2 关闭 Swap(因为k8s不建议采用Swap)
swapoff -a
sed -i '/swap/d' /etc/fstab
1.3 禁用 SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
1.4 配置防火墙
在所有节点上,打开以下端口(如果启用了 firewalld):
firewall-cmd --add-port=6443/tcp --permanent
firewall-cmd --add-port=2379-2380/tcp --permanent
firewall-cmd --add-port=10250/tcp --permanent
firewall-cmd --add-port=10251/tcp --permanent
firewall-cmd --add-port=10252/tcp --permanent
firewall-cmd --add-port=10255/tcp --permanent
firewall-cmd --reload
添加信任的IP(本机IP)
firewall-cmd --add-source=需要信任的IP --permanent
或者直接关闭防火墙(不建议,单纯的学习可以用这种方式):
systemctl stop firewalld
systemctl disable firewalld
1.5 配置 iptables
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
modprobe br_netfilter
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
2. 安装 Docker
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
systemctl enable --now docker
配置 Docker 使用 systemd:
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
systemctl restart docker
3. 安装 Kubernetes
先删除现有的k8s的repo sudo rm -f /etc/yum.repos.d/kubernetes.repo
在所有节点上执行(注意kubectl、kubeadm、kubelet的版本):
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key EOF
参考文章:kubernetes镜像_kubernetes下载地址_kubernetes安装教程-阿里巴巴开源镜像站
清理yum缓存
sudo yum clean all
sudo yum makecache fast
开始安装
sudo yum install -y kubelet kubeadm kubectl
启动kubelet并设置开机自启
sudo systemctl enable --now kubelet
4. 初始化 Master 节点
仅在 Master 节点执行:
sudo kubeadm init --apiserver-advertise-address=47.122.126.170 --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.28.15
执行完成后,它会输出 kubeadm join 的命令,稍后用于让 Node 节点加入集群。
配置 kubectl:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
5. 部署 CNI 网络插件
使用以下命令
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
或者使用如下操作
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26/manifests/calico.yaml
修改以下部分,可以用vim检索①,补上②。其中②处=后面的使用ip addr命令查出网卡的名字填入即可。
注意这边如果出现错误需要用kubectl describe进行排错,我当时部署的时候出现了master-plane有Taint的情况,在calico.yaml里加上了Taint tolerations策略加以解决。
6. 让 Node 加入集群
在 Node1 和 Node2 上,使用 kubeadm join 命令(此命令来自 Master kubeadm init 的输出,例如):
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash值>
在 Master 节点上,查看节点状态:
kubectl get nodes
如果所有节点 STATUS 为 Ready,则 Kubernetes 集群搭建完成!
如果你有额外需求,比如存储(PV)、Ingress Controller 或 Helm,可以进一步配置。
还有一个容易出现的问题,就是calico相关的pod可能一直处在ContainerCreating状态,这种情况可以采取以下操作解决。
(1) 重启 containerd 和 kubelet
sudo systemctl restart containerd kubelet
(2) 强制重建 Calico Pod
kubectl delete pod -n calico-system --all
*7.可视化配置
安装helm\
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
安装KubeSphere(本地已经有k8s集群,并且配置好网络插件)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
chmod +x kk
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.3.tgz --debug --wait
耐心等待下面的结果出现,可以在集群外部使用浏览器访问masterIP:30880进行访问,如果是云服务器可是使用ssh的IP进行访问。