简介
Kubernetes(K8S)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。本文将介绍K8S的常见集群架构和搭建方式,并详细说明如何基于Minikube搭建单节点K8S集群以及部署第一个K8S应用。
K8S常见集群架构和搭建方式
集群类型
-
单master-Node集群
-
一主多从,推荐测试环境使用。
-
服务器要求:至少2台2核4G以上的云服务器。
-
-
多master-Node集群
-
多主多从(高可用集群),推荐生产环境使用。
-
服务器要求:至少4台2核4G以上的云服务器。
-
-
单节点K8S集群
-
单个节点。
-
服务器要求:至少一台2核4G以上的云服务器。
-
K8S搭建方式
-
kubeadm搭建(推荐)
-
提供
kubeadm init
和kubeadm join
命令,用于快速搭建K8S集群。
-
-
二进制包搭建
-
从GitHub下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
-
可以了解底层,但步骤繁琐,坑较多。
-
-
Minikube搭建
-
轻量化的Kubernetes集群,适用于开发者和学习者。
-
使用个人PC的虚拟化环境快速构建启动单节点K8S。
-
云服务器说明
本地虚拟机或者其他系统,存在各种系统版本、内核参数调整、swap分区、网络问题等,为了避免兼容性问题,建议统一使用阿里云Linux CentOS 7.8。如果多节点集群搭建,可以使用阿里云的按量付费选择多台ECS服务器。
基于Minikube搭建单节点K8S集群
简介
Minikube是一种轻量化的Kubernetes集群,适用于开发者和学习者快速构建启动单节点K8S。
机器准备: 阿里云 CentOS 7.x,2核4G。
安装步骤
-
安装Docker
# 1.先安装yml yum install -y yum-utils device-mapper-persistent-data lvm2 # 2.设置阿里云镜像 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 3.查看可安装的docker版本 yum list docker-ce --showduplicates | sort -r #4. 安装docker yum -y install docker-ce-20.10.10-3.el7 #5. 查看docker版本 docker -v #配置开机自启动 systemctl enable docker.service #6. 启动docker systemctl start docker #7. 查看docker 启动状态 systemctl status docker
-
配置镜像源
cat > /etc/yum.repos.d/kubernetes.repo << EOF [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
-
安装kubectl
yum install -y kubectl-1.18.0
-
安装minikube
curl -LO https://storage.googleapis.com/minikube/releases/v1.18.1/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
-
检查minikube安装是否成功
minikube version
-
启动minikube
minikube start --image-mirror-country='cn' --driver=docker --force --kubernetes-version=1.18.1 --registry-mirror=https://registry.docker-cn.com
-
查看集群信息
kubectl cluster-info
快速部署第一个K8S应用
查看K8S集群信息
kubectl cluster-info
查看节点信息
kubectl get node
查看内部组件
kubectl get pod -A
部署第一个K8S应用-Nginx,并通过公网IP访问
-
创建deployment(Pod控制器的一种, 直接删除pod后,会自动创建新的,需要删除deployment)
kubectl create deployment xdclass-nginx --image=nginx:1.23.0
-
对比Docker部署
docker run --name xdclass-nginx -p 8080:80 -d nginx:1.23.0
-
查看deployment和pod
kubectl get deployment,pod,svc
-
暴露80端口
kubectl expose deployment xdclass-nginx --port=80 --type=NodePort
-
转发端口(Mini Kube临时)
kubectl port-forward --address 0.0.0.0 service/xdclass-nginx 80:80 解释: kubectl port-forward 转发一个本地端口到 Pod 端口,不会返回数据,需要打开另一个终端来继续这个练习
注意事项
-
Minikube的搭建与Kubeadm有所不同。
-
NodePort不能通过IP+端口直接访问,需要通过Minikube service(内网访问)和端口转发(公网访问)。