K8S部署实践指南:一步步教你搭建Kubernetes集群

柔情密语 2021-07-28 ⋅ 25 阅读

Kubernetes(简称K8S)是一个用于容器编排和自动化部署的开源平台,它能够帮助开发者更轻松地管理和扩展容器化应用程序。本文将详细介绍如何使用K8S搭建一个完整的Kubernetes集群,包括Master节点和Worker节点的部署,以及常见的配置和操作指南。

准备工作

在开始之前,确保你已经具备以下条件:

  1. 一台或多台运行Linux操作系统的虚拟机或物理机,可以是云服务器、个人电脑或其他主机。
  2. 安装了Docker,Kubernetes的底层依赖容器技术。你可以参考Docker官方文档进行安装:Docker 安装文档
  3. 支持虚拟化的处理器和操作系统,以运行虚拟机作为Kubernetes集群的节点。如果你使用云服务器,确保你选择的云服务商支持虚拟化。
  4. 配置好网络,确保Master节点和Worker节点之间可以相互访问。

第一步:配置Master节点

  1. 在一台机器上选择作为Master节点,输入以下命令进行初始化:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
  1. 初始化完成后,根据命令提示,运行以下命令将配置文件复制到当前用户的家目录下:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. 继续运行以下命令,安装网络插件(本例使用Flannel):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  1. 等待网络插件安装完成,使用以下命令检查Master节点的状态:
kubectl get nodes

你应该会看到Master节点处于Ready状态。

第二步:配置Worker节点

  1. 在每台作为Worker节点的机器上,输入以下命令加入集群。在之前的步骤中,你应该已经在Master节点上执行了kubeadm init命令,输出结果中包含了加入集群的命令:
sudo kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
  1. 在Master节点上运行以下命令,将Worker节点的加入状态设置为Ready
kubectl get nodes

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

第三步:部署应用程序

现在,你的Kubernetes集群已经搭建完成,可以开始部署应用程序了。

  1. 创建一个Deployment来运行你的应用程序。例如,下面的命令将在集群中创建一个名为my-app的Deployment,并使用Docker Hub上的一个镜像:
kubectl run my-app --image=my-registry/my-app:v1.0 --port=8080
  1. 使用以下命令检查Deployment的状态:
kubectl get deployments

你应该会看到新创建的Deployment处于Running状态。

  1. 创建一个Service来将应用程序暴露给外部访问。例如,下面的命令将创建一个名为my-service的Service,并将其绑定到刚刚创建的my-app Deployment上的8080端口:
kubectl expose deployment my-app --name=my-service --type=LoadBalancer --port=80 --target-port=8080
  1. 使用以下命令获取Service的外部IP地址:
kubectl get services

你应该会看到my-service的EXTERNAL-IP字段显示为一个有效的IP地址。

现在,你可以使用这个IP地址访问你的应用程序了。

附录:常见操作指南

  • 停止一个正在运行的应用程序:
kubectl delete deployment my-app
  • 扩容一个Deployment中的Pod数量:
kubectl scale deployment my-app --replicas=5
  • 查看集群中所有的Pod:
kubectl get pods --all-namespaces
  • 查看某个Pod的详细信息:
kubectl describe pod <pod-name> -n <namespace>

这只是K8S的一小部分功能,你可以阅读官方文档来了解更多强大的功能和用法:Kubernetes官方文档。祝你在Kubernetes的部署和实践中取得成功!


全部评论: 0

    我有话说: