部署单节点 Kubernetes(K8s)集群通常用于开发环境或测试环境,而不是生产环境,因为在单节点上运行的集群无法提供高可用性保证。以下是一个简化的步骤来在一台机器上部署单节点 Kubernetes 集群:
使用 Minikube 部署单节点 K8s
Minikube 是一个工具,它使得在本地机器(比如笔记本电脑)上搭建单节点的 Kubernetes 集群变得简单易行。
# 安装 Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 # 请替换为对应操作系统的下载链接
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动 Minikube 单节点集群
minikube start --driver=<驱动名称> # 根据主机环境选择合适的虚拟化驱动,如 'virtualbox'、'docker' 或 'kvm2'
# 确保集群已启动并准备就绪
minikube status
# 在集群中部署应用
kubectl create deployment my-app --image=my-app:latest
# 查看集群中的 Pod 和服务
kubectl get pods,svc
安装单节点 Kubernetes(Kubernetes 1.24 及更高版本)使用 kubeadm
的基本步骤如下:
环境准备
-
确保操作系统兼容:确认您的 CentOS 7 或其他 Linux 发行版支持 kubernetes。
-
更新系统并安装依赖:
sudo yum update -y sudo swapoff -a # 关闭交换分区,因为 Kubernetes 要求关闭 sudo sed -i '/ swap / s/^/#/' /etc/fstab # 防止重启后自动启用交换分区 # 安装 Docker 和 kubeadm、kubectl、kubelet sudo yum install -y containerd.io sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
设置 cgroup driver 与 Docker 一致(如果不同需要统一)
sudo systemctl restart docker
sudo grep -q 'cgroup-driver=systemd' /etc/docker/daemon.json || echo '{"exec-opts": ["native.cgroupdriver=systemd"]}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
3. **设置 SELinux 支持**(CentOS 7 可能需要):
```bash
setenforce 0 # 临时禁用 SELinux,生产环境请不要这样做或配置适当的策略
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
初始化 Kubernetes 单节点集群
-
允许防火墙通过 Kubernetes 所需端口:
sudo firewall-cmd --permanent --add-port=6443/tcp sudo firewall-cmd --permanent --add-port=10250/tcp sudo firewall-cmd --permanent --add-port=2379-2380/tcp sudo firewall-cmd --permanent --add-port=10251-10252/tcp sudo firewall-cmd --permanent --add-port=10255/tcp sudo firewall-cmd --reload
-
初始化集群:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket=/var/run/containerd/containerd.sock
这里指定 Pod 网络的 CIDR 范围,并指定了容器运行时接口为 containerd。如果使用的是 Docker,则不指定
--cri-socket
参数。初始化完成后会输出一些命令,用于将当前用户加入到
kubeconfig
中以执行 kubectl 命令。 -
配置 kubectl 访问控制平面:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
配置网络插件
-
安装 Pod 网络插件,例如 Calico 或 Flannel:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 或者使用 flannel kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
等待网络插件部署完成:
kubectl get pods -n kube-system -w
标记控制节点为工作节点
对于单节点集群,需要标记控制节点也作为工作节点:
- 标记节点为工作节点:
kubectl taint nodes --all node-role.kubernetes.io/master-
至此,您已成功在单节点上安装了 Kubernetes 并配置了基本的网络。您可以使用 kubectl
来创建和管理资源。不过,请注意这只是一个基础的安装流程,在实际生产环境中,还需要进一步优化和安全配置。
检查状态和部署应用
kubectl get nodes
kubectl create deployment ...
请注意,以上命令仅为示例,并且可能需要根据具体版本和环境进行调整。在实际操作中,请参考官方文档以获取最新的安装指南。此外,在生产环境中强烈建议部署多节点集群以实现冗余和高可用性。
# 问题
1. 在执行minikube start --driver=docker 时报错,不允许root执行。
可以使用强制执行,或者切换用户执行minikube start --driver=docker --force
也可以切换非root用户,但是需要赋权限 不如说给myuser赋权限 ,加进docker组
```bash
sudo usermod -aG docker myuser
newgrp docker # 切换到新组以使更改生效
-
在执行kubectl 没有这个命令
在 CentOS 7 上安装kubectl
,可以按照以下步骤操作: -
更新系统:
sudo yum update -y
-
安装必要依赖(如果尚未安装):
sudo yum install -y yum-utils curl
-
下载最新稳定版的 kubectl:
使用curl从Kubernetes官方仓库下载适用于Linux amd64架构的kubectl二进制文件,并赋予权限。# 获取最新稳定版kubect版本号 KUBECTL_VERSION=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt) # 下载kubectl到当前目录 curl -Lo kubectl "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" # 给kubectl添加可执行权限 chmod +x ./kubectl
-
将kubectl移动到系统路径下:
这样可以从任何地方直接调用kubectl命令,通常我们会将其移动到/usr/local/bin
目录。sudo mv ./kubectl /usr/local/bin/kubectl
-
验证kubectl安装成功:
确认kubectl已经正确安装并配置好,可以通过查看其版本信息来验证。kubectl version --client
现在,您应该可以在您的CentOS 7系统上使用kubectl与Kubernetes集群进行交互了。如果需要连接到特定的集群,请确保已设置正确的kubeconfig文件或环境变量指向集群配置。
从提供的信息来看,你的 Minikube 环境是运行正常的,控制面板(Control Plane)的各个组件如 host、kubelet、apiserver 都处于 Running 状态,并且 kubeconfig 文件也已经配置好。
然而,你尝试执行 kubectl
命令时提示找不到该命令,这意味着虽然 Minikube 已经启动并运行了一个 Kubernetes 集群,但你的主机系统中还没有正确安装或配置 kubectl
客户端工具。
要在 CentOS 7 上安装 kubectl
,可以按照以下步骤操作:
# 添加 Kubernetes 的稳定版仓库
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/apt/doc/apt-key.gpg
EOF
# 更新包列表并安装 kubectl
sudo yum update
sudo yum install -y kubectl
# 验证 kubectl 是否安装成功
kubectl version --client
如果已安装但在 PATH 路径中未找到 kubectl
,请确保 /usr/local/bin
或其他 kubectl
所在目录已经被添加到了系统的 PATH 环境变量中。你可以通过 echo $PATH
查看当前的 PATH 设置。
另外,Minikube 提供了一个方便的功能,可以直接获取与当前 Minikube 配置相匹配的 kubectl
版本,你可以使用如下命令:
minikube kubectl -- get pods
或者,如果你希望将 Minikube 自带的 kubectl
映射到全局可执行路径:
minikube kubectl config set-cluster minikube --embed-certs=true --server=https://$(minikube ip):8443
minikube kubectl config use-context minikube
ln -s $(which minikube-kubectl) /usr/local/bin/kubectl
完成以上操作后,你应该能在终端中直接使用 kubectl
命令来管理你的 Kubernetes 集群了。
所有评论(0)