Kubernetes初略

背景

近期在看《kubernetes权威指南》这本书,所以需要对文中的一些知识做简要的笔记,本文源自于此。全文内容围绕着第二章Kubernetes架构和部署和第三章Kubernetes快速入门展开

内容

Kubernetes以Etcd作为存储中心件,它的很多重要数据都是存储在Etcd中的。Kubernetes本身是主从分布式的架构,分为主节点Master和从节点NodeMasterNode都可以同时配置为多个,以确保服务整体的稳定。

Master在系统中扮演着整体管理的角色,负责调度管理整个系统。构成Master的组件包括:Kubernetes API Server、Kubernetes Scheduler、Kubernetes Controller Manager,它们各自的职能如下(摘录自《kubernetes权威指南》):

  • Kubernetes API Server:作为Kubernetes系统的入口,其封装了核心对象的增删改查操作,以REST API接口方式提供给外部客户和内部组件调用。它维护的REST对象将持久化到Etcd中。
  • Kubernetes Scheduler:负责集群的资源调度,为新建的Pod分配机器。这部分工作分出来变成一个组件,意味着可以很方便地替换成其他的调度器。
  • Kubernetes Controller Manager:负责执行各种控制器,这个可以百度

当K8S搭建好了以后,可以用以下命令检测各组件运行是否正常。

1
2
3
4
kubectl -s https://[节点IP]:[端口] get componentstatus

# 也可以精简
kubectk get cs

上面的节点IP可以通过以下方式获取:

1
kubectl cluster-info

获得的内容如下:

1
2
3
4
# 看Kubernetes后面跟着的is running
root@vultr:~# kubectl cluster-info
Kubernetes master is running at https://192.168.85.129:6443
KubeDNS is running at https://192.168.85.129:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Node是运行节点,用于运行管理业务的容器。构成Node的组件包括:Kubelet、Kubernetes Proxy,它们各自的职能如下(摘录自《kubernetes权威指南》):

  • Kubelet:负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。
  • Kubernetes Proxy:负责为Pod创建代理服务,Kubernetes Proxy会从Kubernetes API Server获取所有的Service,并根据Service信息创建代理服务,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。
  • Docker:Kubernetes Node是容器运行节点,需要运行Docker服务,

同样,从节点搭建好以后,可以通过以下命令查看运行的健康状态

1
kubectl -s https://[节点IP]:[端口] get node

文章未结宣告

打算暂时先放弃k8s的学习,主要原因如下:

  1. 缺少Linux下运维经验,以及相关网络知识,所以打算积累相关知识

  2. 经过两天的尝试,此前一直疑惑的部署方案,现下大概了解,K8S有三种部署方式:

    minikube:官方提供的单机k8s实验环境,linux环境下,可以直接通过apt install minikube安装

    二进制部署方式:适用于生产环境部署,很麻烦,但便于新手了解k8s内部结构,方便日后报错时的问题定位和处理

    kubeadm部署:便捷部署,将相关的服务通过容器的方式运行在本地,适合老手搭建(之前的搭建方式就是这个)