CentOS上部署Kubernetes集群
前言:
Kubernetes(通常简称为K8s)是一个开源的容器编排和管理平台,最初由Google开发并于2014年发布,目前由云原生计算基金会(Cloud Native Computing Foundation,CNCF)进行维护。它提供了一个可扩展的、高度可靠的系统,用于管理和部署容器化应用程序。
背景: 在过去的几年中,容器化技术(如Docker)的兴起引发了应用程序交付和部署的革命。容器化技术使开发人员能够将应用程序和其依赖项打包到一个独立、可移植的容器中,并在不同环境中进行部署,无论是在开发环境、测试环境还是生产环境。这种方式简化了应用程序的交付流程,提高了开发效率和应用程序的可移植性。
然而,随着容器数量的增加,管理和编排这些容器变得更加复杂。这时就需要一个强大的工具来自动化容器的部署、伸缩、负载均衡和故障恢复等任务,从而提供可靠的、可扩展的容器管理平台。这就是Kubernetes的出现背景。
Kubernetes的目标是简化容器化应用程序的部署和管理。它提供了一组强大的功能和特性,包括:
- 自动化容器的部署、伸缩和调度。
- 故障自动恢复和容器替换。
- 服务发现和负载均衡。
- 配置和存储管理。
- 跨主机和跨云平台的容器网络连接。
- 扩展性和可扩展性。
Kubernetes采用了一种分布式的架构,其中包含Master节点和多个Worker节点。Master节点负责管理和控制整个集群,包括调度容器、监控集群状态和处理集群级别的操作。Worker节点是运行容器的主机,它们负责实际运行和管理容器。
Kubernetes的生态系统非常活跃,有许多附加组件和工具可以扩展和增强其功能。例如,Kubernetes可以与不同的容器运行时(如Docker、containerd)和网络插件(如Calico、Flannel)集成,以满足不同场景和需求的要求。
安装部署:
1、安装docker
sudo yum install -y docker # 安装Docker sudo systemctl enable docker # 启用Docker服务 sudo systemctl start docker # 启动Docker服务
2、安装kubernetes组件
$ sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF # 创建Kubernetes的Yum仓库配置文件 [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/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF sudo yum install -y kubelet kubeadm kubectl # 安装Kubernetes组件 sudo systemctl enable kubelet # 启用Kubelet服务 sudo systemctl start kubelet # 启动Kubelet服务
3、初始化Master节点
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 # 初始化Master节点
4、配置网络插件:
kubectl apply -f https://docs.projectcalico.org/v3.18/manifests/calico.yaml # 部署Calico网络插件
5、将节点加入集群:
在其他节点上运行Master节点初始化时生成的加入命令。示例:
sudo kubeadm join <Master节点IP>:<Master节点端口> --token <令牌> --discovery-token-ca-cert-hash <证书哈希> # 将节点加入集群
6、部署Kubernetes Dashboard:
运行以下命令部署Kubernetes Dashboard: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml # 部署Kubernetes Dashboard kubectl proxy # 创建代理 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ # 访问Dashboard