k8s的master部署
时间: 2025-07-16 13:14:37 浏览: 4
<think>嗯,用户想了解如何部署Kubernetes的master节点,对吧。首先,我得回忆一下自己之前学过的k8s部署流程。记得Kubernetes集群的部署通常使用kubeadm工具,这个工具可以简化很多步骤。用户可能已经看过一些教程,但需要更具体的步骤和配置文件说明。
根据引用里的内容,用户提到了初始化控制平面节点和加入Worker节点,所以重点应该放在kubeadm init的步骤上。引用1里提到部署flannel网络组件,这部分在初始化master节点后需要处理,所以应该包括在步骤里。另外,引用2里提到了kubeadm的功能和准备工作,比如操作系统要求、硬件配置,这些在部署前必须满足。
首先,我需要整理部署前的准备工作。用户可能需要知道软硬件要求,比如操作系统是Ubuntu还是CentOS,至少2GB内存,2核CPU。网络方面需要节点互通,并且关闭防火墙和交换分区。还有安装Docker、kubeadm等组件,这部分需要具体的命令,比如使用apt-get安装。
然后是初始化master节点的步骤。需要生成kubeadm的配置文件,比如kubeadm-config.yaml,里面要指定API服务器地址、Pod网段,还有control-plane的配置。运行kubeadm init命令时,要指定这个配置文件,并且处理可能出现的镜像拉取问题,比如使用阿里云的镜像源。初始化完成后,用户需要按照提示设置kubeconfig文件,这样才能使用kubectl命令。
接下来是部署CNI网络插件,比如Flannel。引用1里提到了上传kube-flannel.yml文件并应用,可能需要修改其中的网络参数。用户需要等待一段时间让Pod变成Ready状态,然后检查节点状态。这部分要详细说明,因为网络组件是集群正常工作的关键。
另外,用户可能关心配置文件的内容,比如kubeadm-config.yaml里的各个参数,如localAPIEndpoint的advertiseAddress,networking的podSubnet。还有Flannel的配置文件中的Network字段是否与kubeadm配置一致,避免网络冲突。
最后,应该提醒用户注意常见问题,比如镜像拉取失败,这时候可能需要更换镜像源或者手动拉取。还有节点NotReady的情况,需要检查CNI插件是否正确安装。另外,kubeadm init失败时要查看日志,可能需要重置集群再重新初始化。
用户的问题可能还涉及后续步骤,比如如何加入worker节点,但当前问题集中在master节点的部署,所以需要集中在master的配置和初始化。确保步骤清晰,每个命令都正确,并且配置文件有详细注释,这样用户能一步步跟着操作。</think>### Kubernetes Master节点部署步骤详解
根据引用[1][2]的部署实践,以下是Kubernetes Master节点的部署流程:
#### 一、部署前准备(所有节点执行)
1. **系统要求**
- 操作系统:Ubuntu 18.04+/CentOS 7+
- 内存≥2GB,CPU≥2核
- 禁用交换分区:`swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab`
- 关闭防火墙:`systemctl stop firewalld && systemctl disable firewalld`
2. **安装依赖组件**
```bash
# 安装Docker
curl -fsSL https://get.docker.com | bash -s docker
systemctl enable docker && systemctl start docker
# 安装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.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl enable kubelet
```
#### 二、Master节点初始化
1. **生成初始化配置文件**
```bash
cat > kubeadm-config.yaml <<EOF
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.1.100 # 替换为实际IP
bindPort: 6443
nodeRegistration:
criSocket: unix:///var/run/dockershim.sock
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: 1.23.0
controlPlaneEndpoint: "192.168.1.100:6443"
networking:
podSubnet: "10.244.0.0/16" # 必须与CNI插件匹配
imageRepository: registry.aliyuncs.com/google_containers # 国内镜像源
EOF
```
2. **执行初始化命令**
```bash
kubeadm init --config=kubeadm-config.yaml --upload-certs
```
初始化成功后显示:
```
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
#### 三、部署CNI网络插件(以Flannel为例)
1. **应用Flannel配置**
```bash
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i 's|"Network": "10.244.0.0/16"|"Network": "10.244.0.0/16"|' kube-flannel.yml # 确认网络参数
kubectl apply -f kube-flannel.yml
```
2. **验证部署状态**
```bash
kubectl get pods -n kube-system
kubectl get nodes
```
正常状态显示:
```
NAME STATUS ROLES AGE VERSION
master01 Ready control-plane 5m v1.23.0
```
#### 四、关键配置文件说明
1. **kubeadm-config.yaml**
```yaml
apiServer:
certSANs:
- "master01.yourdomain.com" # 需要证书包含的域名
controllerManager: {}
scheduler: {}
```
2. **Flannel网络配置片段**
```yaml
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
```
#### 五、注意事项
1. 镜像拉取失败时,可手动拉取镜像:
```bash
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.0
```
2. 若节点状态长时间NotReady,检查CNI插件日志:
```bash
journalctl -u kubelet -f
```
3. 重置部署使用:
```bash
kubeadm reset -f && rm -rf /etc/cni/net.d/
```
阅读全文
相关推荐


















