1. Kubernetes简介

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化计算机集群中容器的部署、扩展和管理。它由Google设计,并捐赠给了Cloud Native Computing Foundation进行维护。Kubernetes的主要目标是让容器化应用程序的部署和管理更加高效和自动化。

2. 系统要求

在开始搭建Kubernetes集群之前,需要确保满足以下系统要求:

  • 操作系统:CentOS 7.x 或 Ubuntu 16.04/18.04
  • 硬件要求:至少2GB内存,至少2vCPU
  • 网络要求:所有节点之间网络可达

3. 安装前的准备

3.1 配置主机名

在所有节点上设置主机名,并确保主机名可以解析。

hostnamectl set-hostname <hostname>

3.2 关闭防火墙

关闭或调整防火墙设置,以确保节点之间可以正常通信。

systemctl stop firewalld
systemctl disable firewalld

3.3 关闭SELinux

关闭SELinux,以确保Kubernetes组件可以正常工作。

setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3.4 安装必要的软件包

安装一些必要的软件包,例如epel-releasetarunzipcurl等。

yum install -y epel-release tar unzip curl

4. 使用kubeadm搭建K8s集群

4.1 初始化Master节点

在Master节点上执行以下命令,初始化集群。

kubeadm init --pod-network-cidr=10.244.0.0/16

初始化成功后,会输出一个命令,用于将节点添加到集群。

kubeadm join <master-ip>:43 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

4.2 配置kubectl

将Master节点的/etc/kubernetes/admin.conf文件复制到所有节点上的~/.kube/config文件中。

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

4.3 安装网络插件

安装一个网络插件,例如Calico或Flannel,以确保Pod之间可以通信。

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

4.4 添加Worker节点

在Worker节点上,执行之前获取的命令,将其添加到集群。

kubeadm join <master-ip>:43 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

5. 验证集群

5.1 验证Master节点

在Master节点上,执行以下命令,查看节点状态。

kubectl get nodes

应该看到所有节点都处于Ready状态。

5.2 验证Pod

在Master节点上,创建一个Pod,并查看其状态。

kubectl run hello-world --image=nginx
kubectl get pods

Pod应该处于Running状态。

6. 总结

通过以上步骤,你已经成功搭建了一个Kubernetes集群。你可以继续学习如何部署和管理应用程序,或者尝试其他高级功能,例如服务发现、负载均衡等。