Kubernetes学习大纲

2023-09-17 23:47:18

Kubernetes(通常缩写为 K8s)是一个用于自动化部署、扩展和管理容器化(通常是 Docker 容器)应用程序的开源平台。以下是一些 Kubernetes 的核心概念和相关的命令。

1. 集群(Cluster)和节点(Nodes)

集群是 Kubernetes 的基础单元,由一组节点(物理或虚拟机)组成。

命令:

kubectl get nodes

解析:

列出集群中所有的节点。

2. Pod

Pod 是 Kubernetes 的最小部署单元,通常托管一个或多个容器。

命令:

kubectl run nginx --image=nginx
kubectl get pods

解析:

  • 运行一个名为 nginx 的 Pod,并使用 nginx 镜像。
  • 列出所有的 Pod。

3. Service

Service 是一个抽象层,用于暴露 Pod 的网络服务。

命令:

kubectl expose pod nginx --port=80 --type=ClusterIP
kubectl get svc

解析:

  • 使用 ClusterIP 类型暴露 nginx Pod 在端口 80 上的服务。
  • 列出所有的 Service。

4. Deployment

Deployment 用于声明应用程序的期望状态,并由 Kubernetes 自动确保。

命令:

kubectl create deployment nginx-deploy --image=nginx
kubectl get deployments

解析:

  • 创建一个名为 nginx-deploy 的 Deployment。
  • 列出所有的 Deployment。

5. ConfigMap 和 Secret

用于管理配置数据和敏感信息。

命令:

kubectl create configmap my-config --from-literal=key1=value1
kubectl create secret generic my-secret --from-literal=password=mypassword

解析:

  • 创建一个 ConfigMap。
  • 创建一个 Secret。

6. 命名空间(Namespaces)

用于将资源分隔到逻辑上的独立区域。

命令:

kubectl create namespace my-namespace

解析:

创建一个新的命名空间。

7. Volume

用于持久化存储。

命令:

kubectl apply -f my-volume.yaml

解析:

通过 YAML 文件定义一个 Volume,并用 kubectl apply 命令来创建它。

8. Horizontal Pod Autoscaler (HPA)

自动根据 CPU 使用率或其他指标来扩展 Pod 的数量。

命令:

kubectl autoscale deployment nginx-deploy --min=2 --max=5 --cpu-percent=80

解析:

自动缩放名为 nginx-deploy 的 Deployment,根据 CPU 使用率。

9. 自定义资源(CRDs)

用于扩展 Kubernetes API。

命令:

kubectl apply -f my-custom-resource.yaml

解析:

使用 kubectl apply 创建自定义资源。

10. Helm

Helm 是 Kubernetes 的包管理器。

命令:

helm install my-release my-chart

解析:

使用 Helm 安装一个名为 my-release 的 Helm Chart。

【提醒】高级的 Kubernetes 功能如 DaemonSets、StatefulSets、Network Policies 等都有其特定的使用场景。以下是这些高级特性的一些基本解释和示例。

1. DaemonSets

DaemonSet 确保在每个节点上都运行一个 Pod 的副本,通常用于运行集群范围内的守护进程。

命令:

kubectl apply -f daemonset.yaml

解析:

使用一个包含 DaemonSet 配置的 YAML 文件来创建 DaemonSet。

示例 daemonset.yaml:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: my-daemonset
spec:
  selector:
    matchLabels:
      app: my-daemonset
  template:
    metadata:
      labels:
        app: my-daemonset
    spec:
      containers:
      - name: my-daemon
        image: my-daemon-image

2. StatefulSets

StatefulSets 是用于管理有状态应用的工作负载 API 对象。

命令:

kubectl apply -f statefulset.yaml

解析:

使用一个包含 StatefulSet 配置的 YAML 文件来创建 StatefulSet。

示例 statefulset.yaml:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx

3. Network Policies

Network Policies 是一种 Kubernetes 资源,用于控制 Pod 之间的通信。

命令:

kubectl apply -f network-policy.yaml

解析:

使用一个包含 Network Policy 配置的 YAML 文件来创建 Network Policy。

示例 network-policy.yaml:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
  - Ingress

这个示例定义了一个拒绝所有进入(Ingress)流量的 Network Policy。

以上仅为各个高级功能的基础示例。它们都有更多高级和复杂的用法,建议查阅官方文档以获得详细和全面的指导。

更多推荐

vue类与样式的绑定&&列表渲染

目录1.类与样式的绑定1.1绑定HTMLclass1.2绑定数组1.3绑定内联样式绑定数组2.列表渲染2.1v-for​2.2v-for与对象2.3在v-for里使用范围值​1.类与样式的绑定1.1绑定HTMLclass我们可以给:class(v-bind:class的缩写)传递一个对象来动态切换class:<div:

java操作es集群模糊查询等

首先引入依赖<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.17.13</version></dependency

linux安装配置 flume

目录一解压安装包二配置部署(1)修改配置(2)下载工具(3)创建配置文件(4)启动监听测试(5)flume监控文件一解压安装包这里提供了网盘资源链接:https://pan.baidu.com/s/1Z0aItCHMybYpXkt3_RUaVw?pwd=s6pg提取码:s6pg这里安装包是放到/opt/install文

Java中List转字符串的方法

一、使用String.join方法在Java8之后,String类增加了一个静态方法join(),可以方便地将列表中的元素连接成字符串。//创建ListList<String>list=Arrays.asList("Google","Baidu","Taobao");//以逗号分隔的形式输出整个列表Stringresu

微服务保护

1.初识Sentinel1.1.雪崩问题及解决方案1.雪崩问题微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影响。但是,依赖服务I的业务请求被阻塞,用户不会得到响应,则t

在c#中使用CancellationToken取消任务

目录🚀介绍:🐤简单举例🚀IsCancellationRequested🚀ThrowIfCancellationRequested🐤在控制器中使用🚀通过异步方法的参数使用cancellationToken🚀api结合ThrowIfCancellationRequested()🚀介绍:Cancellatio

POJ 3185 The Water Bowls 反转+点灯游戏

一、题目大意有20盏灯(其实20盏灯数据量太少了,1e7我觉得差不多都可以过)放在同一行,点亮某一盏灯,它左右两边的灯也会亮,然后边缘特殊考虑,电亮两端的灯,只会照亮它相邻的那一个。二、解题思路这其实就是一个反转问题,我们从第二盏灯开始循环到第20盏灯,对于每一次循环的i,我们计算出i-1的灯是否亮着,如果i-1亮着,

Golang 中的匿名变量详解

在Golang中,可以使用匿名变量来忽略不需要的返回值或占位符。匿名变量是一种特殊类型的变量,可以简化代码并提高可读性。本文将详细介绍匿名变量的定义、特性和使用方法。什么是匿名变量?在Golang中,匿名变量是一种没有显式声明名称的变量,通常用于在需要临时存储值但不需要在后续代码中使用该值的情况。匿名变量的声明方式是使

吃瓜教程第一二章学习记录

当大多数人听到"机器学习"时,他们会联想到机器人:一个可靠的管家或一个致命的终结者,这取决于你问谁。但是,机器学习并不只是未来主义的幻想,它已经存在了。事实上,在一些特殊的应用中,如光学字符识别(OCR)等,已经有了几十年的历史。但是第一个真正主流的ML应用是在20世纪90年代:垃圾邮件过滤器,它改善了数亿人的生活,并

【GPU编程】Visual Studio创建基于GPU编程的项目

vs创建基于GPU编程的项目🍊前言🐸方法一-CUDARuntime生成😝debug设置🍅方法二-空项目配置🍉🍉🍉代码验证🍊前言cuda以及cudnn的安装以及系统环境变量的配置默认已经做完。如果没有安装好配置好的,可以参考其他的博客。本博客只为记录在完成以上配置后,如何在vs端创建GPU编程的项目。🐸

多线程中的Semaphore信号量

在Java多线程编程中,Semaphore是一种用于控制资源访问的机制。Semaphore允许您限制同时访问某个资源的线程数量。这在需要限制并发访问的情况下非常有用,例如数据库连接池或有限数量的线程池。创建Semaphore要使用Semaphore,首先需要创建一个Semaphore对象并指定许可证数量。许可证数量表示

热文推荐