温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何安装kubernetes

发布时间:2021-11-12 11:26:55 来源:亿速云 阅读:182 作者:小新 栏目:云计算

如何安装 Kubernetes

目录

  1. 引言
  2. Kubernetes 概述
  3. 安装前的准备
  4. 安装 Kubernetes
  5. 验证 Kubernetes 集群
  6. Kubernetes 集群管理
  7. 常见问题及解决方案
  8. 总结

引言

Kubernetes 是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它最初由 Google 开发,现在由 Cloud Native Computing Foundation (CNCF) 维护。Kubernetes 提供了强大的工具来管理容器化应用程序的生命周期,包括自动部署、自动扩展、负载均衡、存储管理、自动修复等。

本文将详细介绍如何安装 Kubernetes,包括安装前的准备、安装步骤、验证集群、集群管理以及常见问题的解决方案。通过本文,您将能够成功安装并管理一个 Kubernetes 集群。

Kubernetes 概述

Kubernetes 是一个用于自动化容器化应用程序部署、扩展和管理的开源平台。它提供了一个强大的工具集,用于管理容器化应用程序的生命周期,包括自动部署、自动扩展、负载均衡、存储管理、自动修复等。

Kubernetes 的核心概念包括:

  • Pod: Kubernetes 中的最小部署单元,通常包含一个或多个容器。
  • Node: Kubernetes 集群中的工作节点,可以是物理机或虚拟机。
  • Cluster: 由多个 Node 组成的 Kubernetes 集群。
  • Service: 用于定义一组 Pod 的访问策略,通常用于负载均衡。
  • Namespace: 用于将 Kubernetes 资源划分为不同的逻辑组。
  • Deployment: 用于定义 Pod 的部署策略,支持滚动更新和回滚。
  • ConfigMap 和 Secret: 用于管理应用程序的配置和敏感信息。

Kubernetes 提供了丰富的 API 和命令行工具,使得用户可以轻松地管理和操作容器化应用程序。

安装前的准备

在安装 Kubernetes 之前,需要确保系统满足一定的要求,并进行必要的环境准备和网络配置。

系统要求

Kubernetes 对系统的要求如下:

  • 操作系统: 支持的操作系统包括 Ubuntu、CentOS、Debian、Fedora 等。本文以 Ubuntu 20.04 为例。
  • CPU: 至少 2 核 CPU。
  • 内存: 至少 2 GB RAM。
  • 磁盘空间: 至少 20 GB 可用磁盘空间。
  • 网络: 所有节点之间需要能够互相通信,建议使用私有网络。

环境准备

在安装 Kubernetes 之前,需要确保所有节点的环境一致,并进行必要的配置。

  1. 更新系统: 确保所有节点的系统是最新的。
 sudo apt update sudo apt upgrade -y 
  1. 禁用交换分区: Kubernetes 不支持交换分区,需要禁用。
 sudo swapoff -a sudo sed -i '/swap/d' /etc/fstab 
  1. 设置主机名: 为每个节点设置唯一的主机名。
 sudo hostnamectl set-hostname <hostname> 
  1. 配置 hosts 文件: 确保所有节点的主机名和 IP 地址映射正确。
 sudo vi /etc/hosts 

添加如下内容:

 <master-ip> <master-hostname> <worker1-ip> <worker1-hostname> <worker2-ip> <worker2-hostname> 
  1. 安装必要的工具: 安装 curlwget 等常用工具。
 sudo apt install -y curl wget 

网络配置

Kubernetes 集群中的节点需要能够互相通信,因此需要配置网络。

  1. 配置防火墙: 确保防火墙允许 Kubernetes 所需的端口。
 sudo ufw allow 6443/tcp sudo ufw allow 2379:2380/tcp sudo ufw allow 10250/tcp sudo ufw allow 10251/tcp sudo ufw allow 10252/tcp sudo ufw allow 10255/tcp sudo ufw allow 30000:32767/tcp sudo ufw reload 
  1. 配置网络插件: Kubernetes 支持多种网络插件,如 Calico、Flannel、Weave 等。本文以 Calico 为例。
 sudo modprobe br_netfilter echo "br_netfilter" | sudo tee /etc/modules-load.d/br_netfilter.conf echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee /etc/sysctl.d/k8s.conf sudo sysctl --system 

安装 Kubernetes

在完成安装前的准备后,可以开始安装 Kubernetes。Kubernetes 的安装过程包括安装 Docker、安装 kubeadm、kubelet 和 kubectl、初始化 Kubernetes 集群、加入工作节点以及安装网络插件。

安装 Docker

Kubernetes 使用 Docker 作为容器运行时,因此需要先安装 Docker。

  1. 安装 Docker: 使用官方脚本安装 Docker。
 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh 
  1. 启动并启用 Docker: 启动 Docker 服务并设置为开机自启。
 sudo systemctl start docker sudo systemctl enable docker 
  1. 配置 Docker: 配置 Docker 使用 systemd 作为 cgroup 驱动。
 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF sudo systemctl daemon-reload sudo systemctl restart docker 

安装 kubeadm、kubelet 和 kubectl

kubeadm 是 Kubernetes 的安装工具,kubelet 是 Kubernetes 的节点代理,kubectl 是 Kubernetes 的命令行工具。

  1. 添加 Kubernetes 源: 添加 Kubernetes 的官方源。
 sudo apt update sudo apt install -y apt-transport-https ca-certificates curl sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update 
  1. 安装 kubeadm、kubelet 和 kubectl: 安装 Kubernetes 的工具。
 sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl 
  1. 启动并启用 kubelet: 启动 kubelet 服务并设置为开机自启。
 sudo systemctl start kubelet sudo systemctl enable kubelet 

初始化 Kubernetes 集群

在 Master 节点上初始化 Kubernetes 集群。

  1. 初始化集群: 使用 kubeadm 初始化集群。
 sudo kubeadm init --pod-network-cidr=10.244.0.0/16 

初始化完成后,会输出加入集群的命令,类似于:

 kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash> 
  1. 配置 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 
  1. 检查集群状态: 使用 kubectl 检查集群状态。
 kubectl get nodes 

此时,Master 节点的状态应为 NotReady,因为尚未安装网络插件。

加入工作节点

在工作节点上执行加入集群的命令。

  1. 加入集群: 在工作节点上执行初始化时输出的加入集群命令。
 sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash> 
  1. 检查节点状态: 在 Master 节点上使用 kubectl 检查节点状态。
 kubectl get nodes 

此时,所有节点的状态应为 NotReady,因为尚未安装网络插件。

安装网络插件

Kubernetes 需要网络插件来实现 Pod 之间的通信。本文以 Calico 为例。

  1. 安装 Calico: 使用 kubectl 安装 Calico。
 kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 
  1. 检查网络插件状态: 使用 kubectl 检查网络插件状态。
 kubectl get pods -n kube-system 

等待所有 Pod 的状态变为 Running

  1. 检查节点状态: 再次检查节点状态。
 kubectl get nodes 

此时,所有节点的状态应为 Ready

验证 Kubernetes 集群

在完成 Kubernetes 的安装后,需要验证集群是否正常工作。

检查节点状态

使用 kubectl 检查节点状态。

kubectl get nodes 

所有节点的状态应为 Ready

部署测试应用

部署一个简单的测试应用,验证集群是否正常工作。

  1. 创建 Deployment: 创建一个 Nginx 的 Deployment。
 kubectl create deployment nginx --image=nginx 
  1. 暴露 Service: 将 Nginx 暴露为 Service。
 kubectl expose deployment nginx --port=80 --type=NodePort 
  1. 检查 Pod 状态: 使用 kubectl 检查 Pod 状态。
 kubectl get pods 

等待 Pod 的状态变为 Running

  1. 访问 Nginx: 使用 curl 访问 Nginx。
 curl <node-ip>:<node-port> 

应返回 Nginx 的欢迎页面。

Kubernetes 集群管理

在 Kubernetes 集群运行后,需要进行日常的管理和维护,包括升级 Kubernetes、备份和恢复、监控和日志等。

升级 Kubernetes

Kubernetes 的升级过程包括升级 kubeadm、kubelet 和 kubectl,以及升级集群。

  1. 升级 kubeadm: 升级 kubeadm。
 sudo apt update sudo apt install -y kubeadm 
  1. 升级 Master 节点: 在 Master 节点上执行升级。
 sudo kubeadm upgrade apply <version> 
  1. 升级 kubelet 和 kubectl: 升级 kubelet 和 kubectl。
 sudo apt update sudo apt install -y kubelet kubectl sudo systemctl restart kubelet 
  1. 升级工作节点: 在工作节点上执行升级。
 sudo kubeadm upgrade node sudo apt update sudo apt install -y kubelet kubectl sudo systemctl restart kubelet 

备份和恢复

Kubernetes 集群的备份和恢复是确保数据安全的重要步骤。

  1. 备份 etcd: 备份 etcd 数据。
 sudo ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save snapshot.db 
  1. 恢复 etcd: 恢复 etcd 数据。
 sudo ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot restore snapshot.db 

监控和日志

Kubernetes 提供了丰富的监控和日志工具,帮助用户了解集群的运行状态。

  1. 安装 Metrics Server: 安装 Metrics Server 以监控集群资源使用情况。
 kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 
  1. 查看资源使用情况: 使用 kubectl 查看资源使用情况。
 kubectl top nodes kubectl top pods 
  1. 查看日志: 使用 kubectl 查看 Pod 的日志。
 kubectl logs <pod-name> 

常见问题及解决方案

在安装和管理 Kubernetes 集群的过程中,可能会遇到一些常见问题。以下是一些常见问题及解决方案。

  1. 节点状态为 NotReady: 可能是网络插件未正确安装。检查网络插件的状态,并重新安装。
 kubectl get pods -n kube-system kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 
  1. Pod 无法启动: 可能是资源不足或配置错误。检查 Pod 的事件日志,调整资源配置。
 kubectl describe pod <pod-name> 
  1. kubectl 无法连接集群: 可能是配置文件错误。检查 ~/.kube/config 文件,确保配置正确。
 cat ~/.kube/config 
  1. etcd 数据损坏: 可能是 etcd 数据损坏。使用备份恢复 etcd 数据。
 sudo ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot restore snapshot.db 

总结

本文详细介绍了如何安装 Kubernetes,包括安装前的准备、安装步骤、验证集群、集群管理以及常见问题的解决方案。通过本文,您应该能够成功安装并管理一个 Kubernetes 集群。Kubernetes 提供了强大的工具来管理容器化应用程序的生命周期,帮助您实现应用程序的自动化部署、扩展和管理。希望本文对您有所帮助,祝您在 Kubernetes 的世界中探索更多可能性!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI