Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)读书笔记 第一章

我的demo是通过minikube启动的,一定要看一下1.3.1节


第1章 Kubernetes入门 1

提示:这里可以添加本文要记录的大概内容:


提示:以下是本篇文章正文内容,下面案例可供参考

1.1 了解Kubernetes 2

在 Kubernetes 中, Service 是分布式集群架构的核心 。一个Service对象拥有如下关键
特征。

  • 拥有唯一指定的名称(比如 mys ql- server )。
  • 拥有一个虚拟 IP 地址 (ClusterIP 地址)和端口号 。
  • 能够提供某种远程服务能力 。
  • 能够将客户端对服务的访问请求转发到一组容器应用上 。

Service 的服务进程通常基于 Socket 通信方式对外提供服务。Kubernetes 能够让我们通过 Service (ClusterIP+Service Port ) 连接指定的服务 。

1.2 为什么要用Kubernetes 5

1.3 从一个简单的例子开始 7

1.3.1 环境准备 8

这里特别重要

我入门学习的环境是通过minikube启动的,对于新手来讲,直接搭建一个主从集群太困难了,我参考了很多课程,都没办法在初期直接搭建一个可用的集群,所以我创建了一个minikube环境,我们可以先学完,然后回来折腾集群。minikube的基本使用如下,对于新手,只要能执行kubectl就可以继续了。

minikube基本使用

1.3.2 启动MySQL服务 8

1.3.3 启动Tomcat应用 11

1.3.4 通过浏览器访问网页 12

对于minikube运行这个例子,有个细节要注意,我们是通过minikube启动的容器,那么需要访问minikube的主机ip才可以访问。剧透一下:你可以通过如下命令找到minikube的主机ip,但是也必须在minikube运行的虚拟机上才可以访问。进一步思考,我们是否可以使用host模式,让minikube拥有一个网段内的ip。

kubectl describe node minikube

1.4 Kubernetes的基本概念和术语 14

1.4.1 资源对象概述 14

Kubernetes主要围绕资源对象展开,术语包含两类

  1. 资源对象,例如 Node、Pod、Service、Volume
  2. 与资源有关的事物或动作,例如 Label、Annotation、Namespace、Deployment、HPA、PVC

1.4.2 集群类 15

集群(Cluster)表示由Master和Node组成的Kubernetes集群

Master

运行着以下关键进程

  • api-server :对资源增删改查的唯一入口,集群控制的唯一入口
  • controller-manager : 资源对象的自动化控制中心
  • scheduler : 负责资源调度
  • etcd :注册中心

Node

  • kubelet : 负责Pod对应容器的创建、启停
  • kube-proxy : Service的通信与负载均衡
  • 容器运行时(如Docker): 负责容器创建和管理

查看Node信息

kubectl describe node minikube

命名空间,多租户资源隔离。Kubernetes会自动创建两个命名空间,default和kube-system。
用户创建资源对象如果没有指定命名空间,会被默认存放在default,系统相关的资源对象如网络组件、DNS组件、监控类组件等都被安装在kube-system命名空间中。

kubectl get pods # 查询default命名空间
kubectl get pods --namespace=development # 查询development命名空间

1.4.3 应用类 19

Service和Pod

Service是指无状态服务。具有一个全局唯一的虚拟ClusterIP。通过Kubernetes的DNS服务,可以实现域名到ClusterIP的DNS映射。

Pod是Kubernetes的最小调度单位。可以将多个进程一起调度和伸缩。包含一个被称为根容器的Pause容器。多个业务容器共享Pause容器的IP,共享Pause容器挂载的Volume,简化了通信和文件共享问题。

每个Pod有独立IP,集群内跨节点的两个Pod,也是可以直接通信的,这通常采用虚拟二层网络技术实现,例如Flannel。

普通Pod一旦创建,会被放入etcd中存储,随后被调度到具体Node并绑定。
静态Pod不会放入etcd,而是存放在具体Node上的具体文件中。并且只能在此Node上启动运行。

Pod IP加上容器端口组成Endpoint,代表此Pod里的一个服务对外通信地址。一个pod可以有多个Endpoint,例如对Tomcat可以暴露管理端口和服务端口两个Endpoint。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: myweb
  name: myweb
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - image: kubeguide/tomcat-app:v1
        name: myweb
        ports:
        - containerPort: 8080 # 容器端口
        env:
        - name: MYSQL_SERVICE_HOST
          value: 10.104.81.106

查看Pod的Event

kubectl describe pod xxx

Label与标签选择器

Label是一个key=value的键值对,其中k-v由用户指定。Label可以附加到各种资源对象上,例如Node、Pod、Service、Deployment。一个资源对象对应n个Label。

标签选择器要求同时满足多个条件。

Pod与Development

Development有两个功能,根据模板创建Pod,自动控制。

创建Development的命令:

kubectl create -f xxx-development.yaml

查看Development的命令

kubectl get developments

查看副本数量

kubectl get replicaset

Service 的 ClusterIP地址

创建一个service

kubectl create -f xxx-service.yaml

Headless Service没有ClusterIP,等同于没有转发,直接原生通信。

Service的外网访问问题

  • Node IP : 真实的物理网络
  • Pod IP : 虚拟二层网络
  • Service IP : 集群内的地址,无法再集群外直接使用这个地址。

NodePort是解决集群外的应用访问集群内服务的常见做法。

如果需要负载均衡器,可以把Service的“type=NodePort”改为“type=LoadBalancer”

Ingress解决了多个Service共用一个对外端口的需求。

有状态集群

例如Zookeeper、mysql、Kafka。
两种解决方案:StatefulSet、Operator。

StatefulSet要与PV卷捆绑,以存储Pod状态,还要与Headless Service配合。

Operator是面向平台开发的。

批处理应用

Job,一个只运行一次的资源。
CronJob,周期性执行job。

应用配置

ConfigMap保存配置项(k=v)的一个Map。
并非简单的编程语言中的map。
类似于配置中心,而且无侵入。

  1. 配置文件名为key,内容为value
  2. 将ConfigMap挂载,调度之后配置文件会跟随。
  3. 内容修改之后重新获取内容并更新。

Secret用于存放敏感数据。

运维问题

HPA动态扩缩容。

1.4.4 存储类 40

包括Volume、Persistent Volume、PVC、StorageClass

静态存储:Volume定义在Pod,被容器共享。
Volume与Pod生命周期相同,和容器生命周期无关。
Kubernetes支持多种Volume

Volume包括emptyDir、hostPath、公有云Volume、其他。

动态存储:Persistent Volume、PVC、StorageClass

1.4.5 安全类 44

基于角色的访问控制权限系统–RBAC

查看集群中所有Service Account

kubectl get sa --all-namespaces

NetworkPolicy(网络策略)


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值