当前位置: 首页 > news >正文

Kubernetes入门级教程

在这里插入图片描述

Kubernetes入门级教程

    • 1. Introduction
      • 1.1 概述
      • 1.2 关键字介绍
    • 2. Cluster Install
      • 2.1 Big Data -- Postgres
    • 3. 基础知识
      • 3.1 Pod
      • 3.2 控制器
      • 3.3 通讯模式
      • 3.4 服务发现
    • 4. Command
      • 4.0 编辑文件
      • 4.1 在宿主机执行命令
      • 4.2 创建资源对象
      • 4.3 查询资源对象
      • 4.4 查询资源描述
      • 4.5 修改资源
      • 4.6 删除资源对象
      • 4.7 查看log日志
    • 5. Awakening


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


3.43开始执行

1. Introduction

1.1 概述

Kubernetes(简称K8S) 是Google开源的分布式的容器管理平台,方便我们在服务器集群中管理我们容器化应用。

1.2 关键字介绍

  • 架构图
    左面的master架构
    右边是node架构在这里插入图片描述
  • 关键字介绍
    kubectl:命令行工具
    Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器
    controller:负责维护集群的状态,比如副本期望数量、故障检测、自动扩展、滚动更新等
    api server:所有服务访问的唯一入口,提供认证、授权、访问控制、API 注册和发现等机制
    scheduler:负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上
    etcd:键值对数据库,保存了整个集群的状态,官方将它定义成一个可信赖的分布式键值存储服务
    kubelet:负责维护容器的生命周期,同时也负责 Volume 和网络的管理
    kube-proxy:负责为 Service 提供 cluster 内部的服务发现和负载均衡
    Container runtime:负责镜像管理以及 Pod 和容器的真正运行
    label:标签,用于对pod进行分类,同一类pod会拥有相同的标签
    NameSpace:命名空间,用来隔离pod的运行环境
  • 过程
    scheduler(调度器)将任务写进api server,api server再将任务写进etcd

2. Cluster Install

2.1 Big Data – Postgres

3. 基础知识

3.1 Pod

3.2 控制器

3.3 通讯模式

3.4 服务发现

4. Command

4.0 编辑文件

# 进入某个容器
kubectl exec mypod -c ruby-container -it -- bash# 编辑名为docker-registry的service
kubectl edit svc/docker-registry

4.1 在宿主机执行命令

# 执行 pod 的 date 命令,默认使用 pod 的第一个容器执行
kubectl exec mypod -- date
kubectl exec mypod --namespace=test -- date# 指定 pod 中某个容器执行 date 命令
kubectl exec mypod -c ruby-container -- date

4.2 创建资源对象

# yaml
kubectl create -f xxx-rc.yaml
kubectl create -f xxx-service.yaml# json
kubectl create -f ./pod.json
cat pod.json | kubectl create -f -# yaml2json
kubectl create -f docker-registry.yaml --edit -o json# 一次性创建
kubectl create -f xxx-service.yaml -f xxx-rc.yaml# 根据目录下所有的 yaml 文件定义内容进行创建
kubectl create -f <目录># 使用 url 来创建资源
kubectl create -f https://git.io/vPieo

4.3 查询资源对象

# 查看所有 Node 或 Namespace 对象
kubectl get nodes
kubectl get namespace# 查看子命令帮助信息
kubectl get --help# 列出默认namespace中的所有pod
kubectl get pods# 列出指定namespace中的所有pod
kubectl get pods --namespace=test# 列出所有namespace中的所有pod
kubectl get pods --all-namespaces# 列出所有pod并显示详细信息
kubectl get pods -o wide
kubectl get replicationcontroller web
kubectl get -k dir/
kubectl get -f pod.yaml -o json
kubectl get rc/web service/frontend pods/web-pod-13je7
kubectl get pods/app-prod-78998bf7c6-ttp9g --namespace=test -o wide
kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}# 列出该namespace中的所有pod包括未初始化的
kubectl get pods,rc,services --include-uninitialized
# 查看所有 RC 对象
kubectl get rc
# 查看所有 Deployment 对象
# 查看全部deployment
kubectl get deployment# 列出指定deployment
kubectl get deployment my-app
# 查看所有 Service 对象
kubectl get svc
kubectl get service
# 查看不同 Namespace 下的 Pod 对象
kubectl get pods -n default
kubectl get pods --all-namespace

4.4 查询资源描述

# 显示 Pod 详细信息
kubectl describe pods/nginx
kubectl describe pods my-pod
kubectl describe -f pod.json# 查看 Node 详细信息
kubectl describe nodes c1# 查看 RC 关联的 Pod 信息
kubectl describe pods <rc-name>

4.5 修改资源

# 滚动更新 pod frontend-v1
kubectl rolling-update frontend-v1 -f frontend-v2.json# 更新资源名称并更新镜像
kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2# 更新 frontend pod 中的镜像
kubectl rolling-update frontend --image=image:v2# 退出已存在的进行中的滚动更新
kubectl rolling-update frontend-v1 frontend-v2 --rollback# 强制替换; 删除后重新创建资源; 服务会中断
kubectl replace --force -f ./pod.json# 添加标签
kubectl label pods my-pod new-label=awesome# 添加注解
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq# 部分更新节点
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'# 更新容器镜像;spec.containers[*].name 是必须的,因为这是合并的关键字
kubectl patch pod valid-pod -p \'{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'

4.6 删除资源对象

# yaml文件名字按照你创建时的文件一致
kubectl delete -f xxx.yaml# 删除包括某个 label 的 pod 对象
kubectl delete pods -l name=<label-name># 删除包括某个 label 的 service 对象
kubectl delete services -l name=<label-name># 删除包括某个 label 的 pod 和 service 对象
kubectl delete pods,services -l name=<label-name># 删除所有 pod/services 对象
kubectl delete pods --all
kubectl delete service --all
kubectl delete deployment --all

4.7 查看log日志

# 不实时刷新kubectl logs mypod
kubectl logs mypod --namespace=test# 查看日志实时刷新
kubectl logs -f mypod -c ruby-container

5. Awakening

         在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。
在这里插入图片描述

http://www.lryc.cn/news/11297.html

相关文章:

  • 15个顶级思维模型
  • 外贸谷歌优化,外贸google SEO优化费用是多少?
  • 华为OD机试 - 统计匹配的二元组个数(Python) | 机试题算法思路
  • Java 日志简介
  • HTTPS协议原理---详解六个加密方案
  • 纯css实现坤坤经典动作-“铁山靠”
  • Linux 操作系统原理 — NUMA 体系结构
  • cesium学习记录01
  • Linux延时队列工作原理与实现
  • 【Python】scipy稀疏矩阵的奇异值分解svds
  • 网络安全等级保护基础知识汇总
  • ros1使用过程中遇到的问题记录
  • centos7给已有分区进行扩容
  • package.json
  • 【项目精选】户籍管理系统(视频+论文+源码)
  • 【IP技术】网络安全防护措施
  • 基于AIOT技术的智慧教室智能物联管控系统设计与实现(提纲)
  • C 指针的深造
  • 大数据之-Nifi-应用场景2-2_设置putfile处理器自动创建目标文件夹_以及存在重复文件时自动覆盖---大数据之Nifi工作笔记0006
  • buuctf Web 下
  • 【项目精选】javaEE土地档案管理系统(源码+论文+视频)
  • JVM那些事——垃圾回收和内存分配
  • 什么牌的运动耳机比较好、运动耳机排行榜10强
  • 华为OD机试题 - N 进制减法(JavaScript)
  • MyBatis 之三(查询操作 占位符#{} 与 ${}、like查询、resultMap、association、collection)
  • 【云原生之Docker实战】使用Docker部署Web在线聊天室Rocket.Chat
  • 阿里一面:谈一下你对DDD的理解?2W字,帮你实现DDD自由
  • 嵌入式Linux入门级板卡的神经网络框架ncnn移植与测试-米尔i.MX6UL开发板
  • 扬帆优配|杠杆资金重仓股曝光,3只科创板股获多路资金青睐
  • 资讯汇总230217