centos7,k8s部署一master节点两work节点,我需要很详细步骤,包括部署所需的配置文件更改,我还需要安装docker制作镜像,把docker安装上,,kubectl、kubeadm、kubelet这些使用1.27版本,container使用版本跟他们兼容,网络插件就使用calico,
时间: 2025-06-10 10:07:26 浏览: 12
<think>嗯,用户想要在CentOS 7上部署一个Kubernetes集群,包含一个master节点和两个worker节点,而且要求详细步骤,包括配置文件的修改,还要安装Docker来制作镜像。组件版本方面,kubectl、kubeadm、kubelet都要用1.27版本,容器运行时需要兼容,网络插件用Calico。首先,我得理清楚整个流程,确保每个步骤都准确无误。
首先,用户可能对Kubernetes有一定的了解,但可能对具体部署步骤不太熟悉,特别是版本兼容性和网络配置方面。需要确保所有组件的版本匹配,比如kubeadm 1.27对应的容器运行时版本,以及Calico插件的选择。此外,CentOS 7的初始化设置也很重要,比如关闭防火墙、SELinux,配置主机名和hosts文件,这些是基础环境准备的必要步骤。
接下来是Docker的安装。用户提到要制作镜像,所以安装Docker是必须的。但需要注意,Kubernetes 1.27可能对Docker的版本有要求,可能需要特定版本,比如20.10.x,而CentOS 7默认的Docker版本可能较旧,需要从官方仓库安装。需要添加Docker的yum源,安装指定版本,并配置daemon.json,尤其是cgroupdriver改为systemd,这是与kubelet兼容的关键点。
然后是Kubernetes组件的安装。用户指定了1.27版本,所以需要配置正确的yum源,可能使用阿里云的镜像源。同时,kubelet需要设置开机启动,但kubeadm init之前不能启动,这需要特别注意。安装完成后,需要配置kubeadm的配置文件,指定Kubernetes版本、控制节点的IP、pod和service的CIDR,以及容器运行时endpoint。这里要注意Calico的默认CIDR是否与配置一致,否则可能需要调整。
初始化master节点时,生成的join命令需要保存,用于worker节点加入集群。安装网络插件Calico时,需要确认其版本是否与Kubernetes 1.27兼容,可能选择v3.25.0,并修改CIDR为之前配置的192.168.0.0/16。如果直接应用官方的yaml文件,可能需要下载后修改,或者使用sed命令替换。
worker节点的步骤类似,但不需要初始化,只需执行join命令。但需确保所有节点的环境准备一致,比如Docker安装、kubeadm等组件的版本相同,否则可能导致兼容性问题。
最后,验证集群状态,确认所有节点状态为Ready,部署测试应用,检查网络和DNS是否正常。这部分用户可能需要验证集群是否正常工作,所以提供一些简单的测试命令,比如创建pod和service,检查日志和连通性。
可能用户在实际操作中会遇到的问题包括:网络插件配置错误导致pod无法通信,kubelet启动失败由于cgroup driver不匹配,或者版本不兼容导致组件无法启动。需要提醒用户注意这些点,并在出现问题时检查日志,如journalctl -xeu kubelet,以及kubectl describe pod等命令。
另外,用户可能需要制作Docker镜像,这部分可能需要指导如何编写Dockerfile,构建镜像,推送到私有仓库或在集群中使用。但用户的问题中未详细说明,可能需要在回答中补充简要步骤,或者询问是否需要进一步说明。
总结下来,需要分步骤详细说明环境准备、Docker安装、Kubernetes组件安装、master初始化、Calico部署、worker节点加入、验证集群,以及可能的问题排查点。确保每个命令准确,配置文件正确,版本兼容,避免用户操作时出现困惑。</think>以下是在CentOS 7系统部署Kubernetes 1.27集群的详细步骤,包含1个Master节点和2个Worker节点的配置:
---
### 一、系统准备(所有节点执行)
```bash
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 关闭swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 配置hosts(所有节点执行)
cat <<EOF >> /etc/hosts
192.168.1.100 k8s-master
192.168.1.101 k8s-worker1
192.168.1.102 k8s-worker2
EOF
# 配置内核参数
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
EOF
sysctl --system
# 设置时区同步
timedatectl set-timezone Asia/Shanghai
systemctl enable chronyd && systemctl start chronyd
```
---
### 二、安装Docker(所有节点执行)
```bash
# 添加Docker仓库
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker 20.10.x(兼容1.27版本)
yum install -y docker-ce-20.10.23 docker-ce-cli-20.10.23 containerd.io
# 配置Docker
mkdir /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# 启动服务
systemctl enable docker && systemctl start docker
```
---
### 三、安装Kubernetes组件(所有节点执行)
```bash
# 添加Kubernetes仓库
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
repo_gpgcheck=0
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-1.27.3 kubeadm-1.27.3 kubectl-1.27.3 --disableexcludes=kubernetes
# 配置kubelet
echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"' > /etc/sysconfig/kubelet
# 启动服务(不要启动kubelet,初始化后再启动)
systemctl enable kubelet
```
---
### 四、Master节点初始化
```bash
# 创建kubeadm配置文件
cat <<EOF > kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
nodeRegistration:
criSocket: unix:///var/run/containerd/containerd.sock
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: 1.27.3
controlPlaneEndpoint: "k8s-master:6443"
networking:
podSubnet: "192.168.0.0/16"
serviceSubnet: "10.96.0.0/12"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF
# 初始化Master节点
kubeadm init --config=kubeadm-config.yaml --upload-certs
# 配置kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
# 安装Calico网络插件(v3.25.0)
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
```
---
### 五、Worker节点加入集群
```bash
# 在Worker节点执行Master初始化后生成的join命令,例如:
kubeadm join k8s-master:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
---
### 六、验证集群状态
```bash
# 查看节点状态
kubectl get nodes -o wide
# 查看Pod状态
kubectl get pods --all-namespaces
# 测试DNS解析
kubectl run -it --rm --image=busybox:1.28 test-dns -- nslookup kubernetes.default
```
---
### 关键注意事项
1. **版本兼容性**:Kubernetes 1.27要求containerd版本>=1.6.0,Docker版本>=20.10.x
2. **网络配置**:Calico的`podSubnet`必须与kubeadm配置的`192.168.0.0/16`一致
3. **常见问题排查**:
```bash
# 查看kubelet日志
journalctl -xeu kubelet
# 重置节点(如初始化失败)
kubeadm reset -f
```
---
### 补充:Docker镜像构建示例
```Dockerfile
# Dockerfile示例
FROM alpine:latest
CMD echo "Hello Kubernetes!"
```
构建镜像命令:
```bash
docker build -t my-app:v1 .
docker tag my-app:v1 registry-url/my-app:v1 # 如需推送到私有仓库
```
---
按照以上步骤操作即可完成集群部署。如果遇到具体错误,请提供错误日志可进一步分析。
阅读全文
相关推荐

















