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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 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,即可出现如下界面

结果演示

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10月前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
Kubernetes API 调度
企业实战(19)基于Kubeadm工具从零开始快速部署K8S集群
企业实战(19)基于Kubeadm工具从零开始快速部署K8S集群
338 0
|
运维 Kubernetes 架构师
中小企业IT基础设施要不要上Kubernetes
中小企业IT基础设施在要不要上Kubernetes?相信你肯定有这样的疑问,先说我的结论:根据我在主导中小企业上云过程的综合实践,建议直接上kubernetes。
|
9月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
10月前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
226 3
|
12月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
10月前
|
存储 运维 Kubernetes
云端迁移:备份中心助力企业跨云迁移K8s容器服务平台
本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。
|
运维 Kubernetes Cloud Native
《企业运维之云原生和Kubernetes 实战》下载电子版
为了帮助用户更好地理解云原生,拥抱云原生,阿里云全球技术服务部联合开发者学堂推出了“企业运维训练营之云原生和Kubernetes 实战”,并基于训练营的演讲内容沉淀此电子书,与各位开发者分享。
341 0
《企业运维之云原生和Kubernetes 实战》下载电子版
|
运维 Kubernetes Cloud Native
《企业运维之云原生和Kubernetes 实战》下载地址电子版
为了帮助用户更好地理解云原生,拥抱云原生,阿里云全球技术服务部联合开发者学堂推出了“企业运维训练营之云原生和Kubernetes 实战”,并基于训练营的演讲内容沉淀此电子书,与各位开发者分享。
205 0
《企业运维之云原生和Kubernetes 实战》下载地址电子版
|
运维 Kubernetes Cloud Native
《企业运维之云原生和Kubernetes 实战》电子版地址下载
为了帮助用户更好地理解云原生,拥抱云原生,阿里云全球技术服务部联合开发者学堂推出了“企业运维训练营之云原生和Kubernetes 实战”,并基于训练营的演讲内容沉淀此电子书,与各位开发者分享。
193 0
《企业运维之云原生和Kubernetes 实战》电子版地址下载