kubernetes技术分享-可用于企业内部培训

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
传统型负载均衡 CLB,每月750个小时 15LCU
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: kubernetes技术分享-可用于企业内部培训

前言

最近很多老铁找我,问有没有适合企业培训用的k8s课件,为了节省大家自己整理资料所花费的时间,我整理了一篇文档,可适用于企业内部培训使用,获取完整pdf可关注公众号领取。

培训内容包括如下

Kubernetes是什么?

kubernetes功能

Kubernetes优点

Kubernetes组件讲解

Kubernetes架构

关键词解释-pod,service,deploymentd等

简单使用

Kubernetes是什么?

Kubernetes是一个开源的容器管理平台,简称k8s,用于管理多个主机上的容器化应用程序 ,提供了应用程序的快速部署、扩缩容,升级和回滚的能力;利用service可以实现服务发现,负载均衡以及转发,通过ingress可以实现七层负载均衡等功能;Kubernetes这个名字源于希腊语,意思是舵手或飞行员,谷歌在2014年开放了Kubernetes项目,Kubernetes建立在谷歌十五年生产经验的基础上而对广大用户开放使用,目前社区活跃度也很高。对于初学者,上面概念比较难以理解,那么可以把他翻译成成如下几句话:

1.可以批量管理docker容器
2.可以对应用升级和回滚
3.可以实现七层和四层负载均衡
4.可以实现服务的自动发现
5.可以快速部署我们想要的应用
6.能够自动对当前的架构进行扩容和缩容等操作

Kubernetes功能

应用健康检测
应用实例复制
水平自动扩展
命名和发现
负载均衡
滚动更新
资源监控
日志访问
自检和调试
识别和认证

Kubernetes优点

1.灵活部署
     kubernetes支持在多种平台部署,可在私有云,公有云,混合云下部署
2.安全高效
    基于rbac做认证授权,精确控制对k8s资源的操作权限
3.负载均衡
   支持四层和7层负载均衡
4.多租户网络隔离
   通过namespace可实现多个用户环境,网络,资源之间的隔离
5.很好的自愈能力
   自动布置,自动重启,自动复制,自动扩展 

Kubernetes组件讲解

1.master节点组件

1)apiserver

提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制,负责接收、解析、处理请求。

2)scheduler

调度器,负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上。

3)kube-controller-manager

控制器,负责维护集群的状态,检查pod的健康状态,比如故障检测、自动扩展、滚动更新等一些操作;

4)etcd

etcd是一个key/value形式的键值存储,保存了整个kubernetes集群的状态,在kubernetes中使用etcd时,需要对etcd做备份,保证高可用,整个kubernetes系统中一共有两个服务需要用到etcd用来协同和存储配置,分别是:

(1)网络插件calico,对于其它网络插件也需要用到etcd存储网络的配置信息

(2)kubernetes本身,包括各种对象的状态和元信息配置

注意:网络插件操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API,所以在下面我们执行etcdctl的时候需要设置ETCDCTL_API环境变量,该变量默认值为2,表示使用v2版本的api,v3表示使用v3版本的api

5)docker

是一个容器引擎,用于运行容器

2.node节点组件,工作节点组件

1)kubelet

负责与master节点的apiserver进行通信的,接收到客户的请求,进行创建Pod,管理Pod,启动pod等相关操作

2)kube-proxy

k8s代理,是在群集中的每个节点上运行的网络代理,kube-proxy负责请求转发,一旦发现了某一个Service关联的Pod信息发生了改变(如IP、Port等),由Kube-Proxy就会把变化后的service转换成IPVS或IPtables规则中,完成对后端pod的负载均衡

3)docker

是一个容器引擎,用于运行容器

3.附加组件

1)coredns

k8s1.11之前使用的是kubedns

1.11之后才有coredns

coredns是一个DNS服务器,能够为Kubernetesservices提供DNS记录

2)dashboard

k8s的web界面,通过这个界面可以对k8s资源进行操作

3)IngressController

七层负载均衡控制器,可以创建nginx或者traefik这种七层负载应用,实现域名和https访问

4)prometheus+alertmanager+Grafana监控k8s集群和物理节点

5)elk

采集pod和容器日志

Kubernetes架构

k8s的物理结构是master/node模式,架构图如下所示:

9470877176ba91a1fab9586a924d92a8.png

master一般是三个节点或者五个节点做高可用,根据集群规模来定,master高可用指的是对apiserver做高可用或者对master的物理节点做高可用,node可以有多个节点,专门用来部署应用的。

关键词解释

Pod    篮子 
container    装在篮子里的蛋
label    标签
label selector  标签选择器,通过标签选择关联的资源
Deployment  Deployment为Pod和ReplicaSet(下一代Replication Controller)提供声明式更新
Service  服务,提供代理和负载均衡
namespace   资源隔离


简单使用


#编写一个yaml文件

cat redis-master-deployment.yaml

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: redis-master
  labels:
    app: redis
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: kubeguide/redis-master
        ports:
        - containerPort: 6379

kubectl apply -f redis-master-deployment.yaml


cat redis-master-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
    role: master
    tier: backend
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
    tier: backend

kubectl apply -f redis-master-service.yaml


cat  redis-slave-deployment.yaml

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: redis-slave
  labels:
    app: redis
spec:
  selector:
    matchLabels:
      app: redis
      role: slave
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: slave
        tier: backend
    spec:
      containers:
      - name: slave
        image: kubeguide/guestbook-redis-slave
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 6379

kubectl apply redis-slave-deployment.yaml


cat  redis-slave-service.yam

apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  labels:
    app: redis
    role: slave
    tier: backend
spec:
  ports:
  - port: 6379
  selector:
    app: redis
    role: slave
    tier: backend

kubectl apply -f redis-slave-service.yaml


cat  frontend-deployment.yaml

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: frontend
  labels:
    app: guestbook
spec:
  selector:
    matchLabels:
      app: guestbook
      tier: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: kubeguide/guestbook-php-frontend
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80

kubectl apply -f frontend-deployment.yaml

cat  frontend-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30001
  selector:
    app: guestbook
    tier: frontend

kubectl apply -f frontend-service.yaml

#查看frontd的service

kubectl get svc

显示如下:

NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                     AGE
frontend                  NodePort    10.111.215.185   <none>        80:30001/TCP                                17s

在浏览器输入,master节点ip:30001,即可出现如下界面

结果演示

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
20天前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
Kubernetes API 调度
企业实战(19)基于Kubeadm工具从零开始快速部署K8S集群
企业实战(19)基于Kubeadm工具从零开始快速部署K8S集群
277 0
|
运维 Kubernetes 架构师
中小企业IT基础设施要不要上Kubernetes
中小企业IT基础设施在要不要上Kubernetes?相信你肯定有这样的疑问,先说我的结论:根据我在主导中小企业上云过程的综合实践,建议直接上kubernetes。
|
9天前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
21 3
|
23天前
|
存储 运维 Kubernetes
云端迁移:备份中心助力企业跨云迁移K8s容器服务平台
本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。
|
2月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
运维 Kubernetes Cloud Native
《企业运维之云原生和Kubernetes 实战》下载电子版
为了帮助用户更好地理解云原生,拥抱云原生,阿里云全球技术服务部联合开发者学堂推出了“企业运维训练营之云原生和Kubernetes 实战”,并基于训练营的演讲内容沉淀此电子书,与各位开发者分享。
216 0
《企业运维之云原生和Kubernetes 实战》下载电子版
|
运维 Kubernetes Cloud Native
《企业运维之云原生和Kubernetes 实战》下载地址电子版
为了帮助用户更好地理解云原生,拥抱云原生,阿里云全球技术服务部联合开发者学堂推出了“企业运维训练营之云原生和Kubernetes 实战”,并基于训练营的演讲内容沉淀此电子书,与各位开发者分享。
164 0
《企业运维之云原生和Kubernetes 实战》下载地址电子版
|
运维 Kubernetes Cloud Native
《企业运维之云原生和Kubernetes 实战》电子版地址下载
为了帮助用户更好地理解云原生,拥抱云原生,阿里云全球技术服务部联合开发者学堂推出了“企业运维训练营之云原生和Kubernetes 实战”,并基于训练营的演讲内容沉淀此电子书,与各位开发者分享。
145 0
《企业运维之云原生和Kubernetes 实战》电子版地址下载
|
弹性计算 运维 大数据
如何基于 ACK 实现企业 IT 成本治理|学习笔记
快速学习如何基于 ACK 实现企业 IT 成本治理
如何基于 ACK 实现企业 IT 成本治理|学习笔记