Kubernetes 基础详解

大家好,我是升仔

Kubernetes 概述

Kubernetes起源于Google,它的核心理念是帮助你在集群中自动部署、扩展和运行应用程序容器。简单来说,它就像一个智能的容器管理员,能够确保你的应用始终运行在最适合的地方。

Kubernetes的基本架构包括两大部分:Master节点和Worker节点。Master节点是大脑,负责整个集群的管理和调度;而Worker节点则是干活的,这里运行着我们的应用容器。

核心概念

  1. Pod:这是Kubernetes中的基本单位,你可以把它想象成一个容器的容器。一个Pod里可以运行一个或多个容器,这些容器共享网络和存储资源。
  2. Service:它定义了如何访问Pod,提供了一种抽象的方式来暴露应用。
  3. Volume:在Docker中,容器的文件系统是临时的。而Volume则提供了一种在Pod中存储数据的方式。
  4. Namespace:这是一种将集群资源划分为多个用途的方法。每个Namespace都有自己的资源配额、权限等。

Kubernetes 组件

  1. etcd:这是一个轻量级、分布式的键值存储,用于存储所有集群数据。
  2. API Server:Kubernetes的大脑,所有的操作都会通过API Server进行。
  3. Scheduler:它负责决定将Pod放在哪个Node上运行。
  4. Controller Manager:负责监视集群状态,并在需要时作出反应。
  5. Kubelet:运行在每个Node上,负责保证容器正常运行。
  6. Kube-proxy:管理Node上的网络规则,实现Service的网络访问。

Kubernetes 安装与配置

接下来,我会带你了解如何在Linux环境中安装Kubernetes。这里会提供一个比较详细的教程,但由于篇幅有限,可能无法展示完整的代码。不过,不要担心,我会尽量让每一步都清晰易懂。

准备工作

首先,你需要有一台运行Linux的机器。这台机器将作为我们的Master节点。假设你已经有了这样的环境,下面是安装Kubernetes的步骤:

步骤1:安装Docker

Kubernetes需要Docker来运行容器,所以我们首先安装Docker。

sudo apt-get update
sudo apt-get install docker.io

记得启动Docker服务并将其设置为开机自启动。

sudo systemctl start docker
sudo systemctl enable docker
步骤2:安装Kubeadm, Kubelet, 和 Kubectl

Kubeadm帮助你快速搭建Kubernetes集群,Kubelet在节点上运行,而Kubectl是用来与集群通信的命令行工具。

sudo apt-get update
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
步骤3:初始化Kubernetes集群

使用kubeadm来初始化集群:

sudo kubeadm init

这个命令会输出一些信息,包括如何将Worker节点加入到这个集群中的命令。记得把这个命令记下来。

步骤4:配置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
步骤5:安装网络插件

Kubernetes需要网络插件来使得Pods能够相互通信。这里我们安装一个叫做Calico的网络插件:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

至此,你的Kubernetes集群应该已经安装并运行起来了。你可以使用kubectl get nodes命令来查看集群的状态。

最后说一句(求关注,求赞,别白嫖)

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

本文已收录于我的技术网站,next-java.com, 有大厂完整面经,工作技术等经验分享

求一键三连:点赞、分享、收藏

点赞对我真的非常重要!在线求赞,加个关注非常感激

你可能感兴趣的:(K8s,kubernetes,容器,云原生)