如何安装kubernetes

发布时间:2021-11-12 11:26:55 作者:小新
来源:亿速云 阅读:175

如何安装 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 的核心概念包括:

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

安装前的准备

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

系统要求

Kubernetes 对系统的要求如下:

环境准备

在安装 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 的世界中探索更多可能性!

推荐阅读:
  1. kubernetes单节点安装
  2. 安装kubernetes gitlab runner

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

kubernetes

上一篇:Spectre css有什么特点

下一篇:Django中的unittest应用是什么

相关阅读

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

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