K8S基础概念和环境搭建

K8S的基础概念

1. 什么是K8S

K8S的全称是Kubernetes

K8S是一个开源的容器编排平台,用于自动化部署、扩缩、管理容器化应用程序。

2. 集群和节点

集群:K8S将多个机器统筹和管理起来,彼此保持通讯,这样的关系称之为集群

节点:集群中的机器称之为节点,在集群中至少存在一个节点。

3. 控制面和普通节点

集群中的机器分为2种角色:

控制面:负责调度

普通节点:负责干活(运行容器)

  • 容器以Pod为单位,在普通节点中运行

  • 同一个Pod中的所有容器,在同一个节点中运行

通常情况下,要避免同一个机器,边干活,边调度。

所以负责调度的机器不会再负责干活,也就是说一个集群中至少要存在两个节点(一个调度、一个干活)

但是如果负责干活的机器只有一个,若该机器出现了故障,就没有机器可以干活了。

所以理想的情况下,至少要存在两个不同的干活节点,也就是在K8S集群中存在3个节点(一个调度、两个干活)

4. K8S组件

在控制面中包含如下组件:

  1. API Server:
  • 核心组件之一,为集群各类资源提高同一个的接口(HTTP REST)
  1. etcd:
  • 分布式(K-V)数据库,特点:高一致性,高可用(容错好)

  • redis也是分布式(K-V)数据库,特点:读写性能好,但是并不符合K8S的需要

  1. kube-scheduler:
  • 监听新Pod创建需求,为其分配合适工作节点

  • 考虑Pod的资源需求、调整条件、负载状况等,尽量选出合适的工作节点

  1. kube-controller-mange:
  • 包含多个不同的"控制器"的管理器

  • 可用创建、管理、监视"控制器"的工作情况

  1. cloud-controller-mange:
  • 创建、管理、监视"云服务"的工作情况

在工作节点中包含如下组件:

  1. kubelet:
  • 接收、执行、监控、反馈来自控制面的调度(Pod)

  • 上报节点自身状态

  1. kuke-proxy:
  • 为Serive提供网络入口,提供负载均衡,调整网路规则
  1. 容器运行时
  • 比如 docker、containerd

5. K8S API

K8S API 是控制面中【API-Server】组件 提供的 HTTP API

K8S API 供用户、集群中不同的部分、集群外不同的组件,相互通信

用户对集群的管理、配置、调度等操,背后都是通过K8S API实现的

搭建K8S开发测试环境

所需一个Ubuntu+Docker的云服务器,内存建议在4G及以上

此处搭建环境的方法是:minikube

其他的搭建方法:Microk8S、K3S等

1. 安装minikube

下载:

XML 复制代码
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

安装:

XML 复制代码
sudo install minikube-linux-amd64 /usr/local/bin/minikube

查看是否安装成功:

XML 复制代码
minikube

2. 启动minikube

XML 复制代码
minikube start

出现类似下图的内容就代表安装成功了

在执行minikube过程中如果出现镜像下载失败的问题,可以详见我的另一篇文章:

minikube start下载镜像失败-CSDN博客

3. 执行kubectl

XML 复制代码
minikube kubectl

执行结果可以参考下面的内容

XML 复制代码
ubuntu@VM-20-9-ubuntu:~$ minikube kubectl
kubectl controls the Kubernetes cluster manager.

 Find more information at: https://kubernetes.io/docs/reference/kubectl/

Basic Commands (Beginner):
  create          Create a resource from a file or from stdin
  expose          Take a replication controller, service, deployment or pod and expose it as a new Kubernetes service
  run             Run a particular image on the cluster
  set             Set specific features on objects

Basic Commands (Intermediate):
  explain         Get documentation for a resource
  get             Display one or many resources
  edit            Edit a resource on the server
  delete          Delete resources by file names, stdin, resources and names, or by resources and label selector

Deploy Commands:
  rollout         Manage the rollout of a resource
  scale           Set a new size for a deployment, replica set, or replication controller
  autoscale       Auto-scale a deployment, replica set, stateful set, or replication controller

Cluster Management Commands:
  certificate     Modify certificate resources
  cluster-info    Display cluster information
  top             Display resource (CPU/memory) usage
  cordon          Mark node as unschedulable
  uncordon        Mark node as schedulable
  drain           Drain node in preparation for maintenance
  taint           Update the taints on one or more nodes

Troubleshooting and Debugging Commands:
  describe        Show details of a specific resource or group of resources
  logs            Print the logs for a container in a pod
  attach          Attach to a running container
  exec            Execute a command in a container
  port-forward    Forward one or more local ports to a pod
  proxy           Run a proxy to the Kubernetes API server
  cp              Copy files and directories to and from containers
  auth            Inspect authorization
  debug           Create debugging sessions for troubleshooting workloads and nodes
  events          List events

Advanced Commands:
  diff            Diff the live version against a would-be applied version
  apply           Apply a configuration to a resource by file name or stdin
  patch           Update fields of a resource
  replace         Replace a resource by file name or stdin
  wait            Experimental: Wait for a specific condition on one or many resources
  kustomize       Build a kustomization target from a directory or URL

Settings Commands:
  label           Update the labels on a resource
  annotate        Update the annotations on a resource
  completion      Output shell completion code for the specified shell (bash, zsh, fish, or powershell)

Subcommands provided by plugins:

Other Commands:
  api-resources   Print the supported API resources on the server
  api-versions    Print the supported API versions on the server, in the form of "group/version"
  config          Modify kubeconfig files
  plugin          Provides utilities for interacting with plugins
  version         Print the client and server version information

Usage:
  kubectl [flags] [options]

Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).

创建别名

XML 复制代码
alias kubectl="minikube kubectl --"

4. 测试环境是否搭建成功

我们可以通过如下命令,测试环境是否搭建成功

XML 复制代码
kubectl get pod -A
或者
minikube kubectl -- get pod -A
相关推荐
007php0074 小时前
家庭智慧工程师:如何通过科技提升家居生活质量
数据库·python·云原生·架构·golang·php·postman
胡八一5 小时前
解决k8s拉取私有镜像401 Unauthorized 问题
云原生·容器·kubernetes
筑梦之路5 小时前
银河麒麟v10 x86架构二进制方式kubeadm+docker+cri-docker搭建k8s集群(证书有效期100年) —— 筑梦之路
docker·容器·kubernetes
不撸先疯。7 小时前
docker镜像源配置、换源、dockerhub国内镜像最新可用加速源(仓库)
运维·docker·容器·dockerhub
Stark-C8 小时前
功能齐全,支持协作 | Docker部署一款支持多人共享的私密浏览器『n.eko』
运维·docker·容器
it噩梦8 小时前
使用EFK收集k8s日志
容器·kubernetes
yunfanleo9 小时前
Docker 容器自动启动设置
云原生·eureka
JunLan~17 小时前
Rocky Linux 系统安装/部署 Docker
linux·docker·容器
小袁搬码20 小时前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
qq_3129201121 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器