首页 > 其他分享 >k8s技术总结(一)

k8s技术总结(一)

时间:2024-08-12 13:28:36浏览次数:15  
标签:总结 kubectl Service get 技术 Deployment Pod k8s

在学习完docker之后,也很有必要再学习k8s的一些理论和技术。

一、基础概念

kubernetes(k8s)和docker在容器管理领域具有不同的侧重点和优势。当前docker主要关注单个容器的构建、运行和管理,而k8s则专注于大规模的容器编排和管理。k8s在以下几个特性中,更具有优势。

特性1:自动化部署和管理

特性2:服务发现和负载均衡

特性3:自动扩展、自愈能力

简单说,k8s属于master-worker架构,master节点负责核心调度,管理,worker节点用来执行用户程序。建议master节点单独部署(一台实体服务器),但可以有多个master node。master node所需的一些组件,kube-apiserver、scheduler、etcd。worker node所需的一些组件,kubelet、kube-proxy、container runtime。

                                                                            k8s服务参考图

二、k8s集群的操作和命令

1、我们使用kubectl,kubectl 是与 Kubernetes 集群交互的主要命令行工具。其基本语法结构为:

kubectl [command] [TYPE] [NAME] [flags]

2、常见操作命令

集群相关

# 查看所有节点
kubectl get nodes
# 查看集群信息
kubectl cluster-info

pod:Pod 是 Kubernetes 中的最小可部署单位,代表一组紧密耦合的容器。每个 Pod 包含一个或多个容器,这些容器共享网络和存储。通常,一个 Pod 运行一个主容器(例如,Web服务器),以及一些辅助容器(如日志收集、监控代理等)。

Pod 通常不直接创建,而是通过更高级别的控制器(如 Deployment)来管理。

相关操作:

# 查看Pod列表
kubectl get pods
# 查看指定命名空间下的Pod
kubectl get pods -n <namespace>
# 详细描述Pod:输出Pod的详细信息,包括事件、状态、配置信息等
kubectl describe pod <pod-name>
# 查看Pod的日志
kubectl logs <pod-name>
# 进入Pod的容器
kubectl exec -it <pod-name> -- /bin/bash
# 删除Pod
kubectl delete pod <pod-name> --force

service:是一种用于定义一组 Pod 的网络访问策略的资源对象。它为外部系统或内部组件提供了稳定的访问入口,即使这些 Pod 的 IP 地址会随着 Pod 的创建和销毁而变化。Service 通过将流量分发到符合选择条件的 Pod 来实现负载均衡。

Kubernetes 支持多种类型的 Service,不同类型的 Service 适用于不同的网络需求:

  1. ClusterIP(默认类型)

    • 仅在集群内部可访问。
    • 为 Service 创建一个虚拟 IP(Cluster IP),用于在集群内部的其他服务间进行通信。
    • 适用于服务之间的内部通信。
  2. NodePort

    • 将服务暴露在每个节点的某个端口上(范围是 30000-32767),通过 <NodeIP>:<NodePort> 访问。
    • 适用于需要从集群外部直接访问服务的情况。
  3. LoadBalancer

    • 在支持的云环境中(如 AWS、GCP),自动创建一个外部负载均衡器,并将其与 Service 关联。
    • 将流量转发到 Service 对应的 NodePort 或 ClusterIP。
    • 适用于需要自动创建云提供商的负载均衡器来暴露服务的情况。
  4. ExternalName

    • 将服务的 DNS 名称映射到外部的 DNS 名称。
    • 没有选择器,与其他服务类型不同,它不会选择集群中的 Pod,而是返回 CNAME 记录。
    • 适用于访问集群外部的资源,如数据库服务。

相关操作:

# 查看Service列表:列出所有Service及其对应的ClusterIP、外部IP等信息
kubectl get services
# 查看Service详细信息
kubectl describe service <service-name>
# 删除service
kubectl delete service <service-name>

deployment:Deployment 是一种用于管理应用程序的 Kubernetes 控制器。它提供声明式更新机制,使你能够管理应用的副本数量、更新策略等。Deployment 是管理 Pod 的常用方式,它确保指定数量的 Pod 始终运行,并且可以自动执行滚动更新和回滚操作。

相关操作:

# 创建Deployment:使用指定镜像创建一个新的Deployment
kubectl create deployment <deployment-name> --image=<image-name>
# 查看Deployment列表
kubectl get deployments
# 查看Deployment详细信息
kubectl describe deployment <deployment-name>
# 更新Deployment的镜像:更新Deployment中容器的镜像,会触发滚动更新
kubectl set image deployment/<deployment-name> <container-name>=<new-image>
# 扩展或缩减Deployment的Pod副本数
kubectl scale deployment <deployment-name> --replicas=<number>
# 编辑Deployment
kubectl edit deployment <deployment-name>
# 删除Deployment
kubectl delete deployment <deployment-name>

ConfigMap资源:是 Kubernetes 中用于存储非机密配置信息的对象。它将配置信息以键值对的形式存储,可以将这些配置注入到容器中作为环境变量、命令行参数,或挂载为文件。ConfigMap 允许配置与容器镜像分离,使得应用程序更易于配置和管理。

相关操作:

# 创建ConfigMap
kubectl create configmap <configmap-name> --from-literal=<key>=<value>
# 查看ConfigMap列表
kubectl get configmaps
# 查看ConfigMap详细信息
kubectl describe configmap <configmap-name>
# 编辑Configmap
kubectl edit configmap <configmap-name>

命名空间:是 Kubernetes 中用于资源隔离的逻辑分区。它允许你在同一个集群中隔离不同的项目或团队的资源。每个 Namespace 之间的资源是独立的,例如 Pod、Service 等,因此可以避免不同应用或团队之间的冲突。

相关操作:

# 查看命名空间列表
kubectl get namespaces
# 创建新的命名空间
kubectl create namespace <namespace-name>
# 删除命名空间
kubectl delete namespace <namespace-name>
# 在指定命名空间中操作:可以用 -n 标志指定操作的命名空间
kubectl get pods -n <namespace-name>

资源监控

# 持续监控pod
kubectl get pods -w
# 监控特定资源
kubectl top pod

 

标签:总结,kubectl,Service,get,技术,Deployment,Pod,k8s
From: https://www.cnblogs.com/xiaojp65536/p/18289139

相关文章

  • 无人机定位技术中的坐标系(全局、局部、机体)
    无人机定位技术中的坐标系在讨论无人机飞行时,涉及的全局、局部和机体三种要素主要反映了不同层次的控制策略和决策过程。我们可以逐一分析这三种要素在无人机飞行中的作用,以明确它们是否都需要全部参与。全局参与:全局参与主要指的是无人机系统在进行飞行任务时所依据的整体......
  • C++部分知识点总结
    动态规划:  01背包(每件物品只有1个)    不装:dp[i][j]=dp[i-1][j]    装: dp[i][j]=max(dp[i][j],dp[i-1][j-w[i]]+c[i])  完全背包    不装:dp[i][j]=dp[i-1][j]    装: dp[i][j]=max(dp[i][j],dp[i][j-w[i]]+c[i])  多重......
  • 341本阿里巴巴系列精品编程技术电子书合集
    获取方式341本阿里巴巴系列精品编程技术电子书合集。分享推荐电子资料《阿里巴巴Java开发手册》(终极版)《阿里云实时计算Flink版解决方案白皮书-2021版》《Python脚本速查手册》《Shell脚本速查手册》《Flutter企业级应用开发实战手册》《云原生开发者洞察白皮书》......
  • 全息技术与光子计算
            全息技术和光子计算是当前科技领域中备受关注的两项前沿技术。它们不仅在各自领域展现出了巨大的潜力,还在多个应用场景中得到了实际应用,并正在逐步引领未来科技的发展方向。1全息技术解析        全息技术(Holography)是一种记录和再现三维图像的技术......
  • 在程序员的道路上,什么关键的概念或技术让你感到自身技能有了显著飞跃
    在程序员的道路上,什么关键的概念或技术让你感到自身技能有了显著飞跃对于程序员来说,在编程的世界里,程序员的成长之路往往充满了挑战与突破。作为程序员,在面对每一个关键概念的理解和技术的掌握都像是攀登山峰的一个个台阶,也正是不断地挑战才使得程序员不断向前,更上一层......
  • Elasticsearch 学习总结 - 相关配置补充说明
    Elasticsearch的基本概念term索引词,在elasticsearch中索引词(term)是一个能够被索引的精确值。foo,FooFoo几个单词是不相同的索引词。索引词(term)是可以通过term查询进行准确的搜索。text文本是一段普通的非结构化文字,通常,文本会被分析称一个个的索引词,存储在elasticsearch的索......
  • 基于人工智能的图像物体擦除与背景填充技术
    摘要:本文介绍了一种基于人工智能的图像处理技术,该技术能够自动识别并擦除图像中的指定物体,同时智能填充背景,以实现图像的自然恢复。该技术为用户提供了一种高效、简便的图像编辑工具,适用于多种应用场景。关键词:人工智能,图像编辑,物体擦除,背景填充1.引言在图像编辑领域,去......
  • Fiddler抓包工具总结
      Fiddler是一款很牛逼的抓包工具,写一篇对它的总结,方便自己查阅序章Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。也可以用来检测网络安全。反正好处多多,举之不尽呀!当年学习的时候也蛮费劲,一些蛮实用隐藏的小功能用......
  • API安全与等保测评:接口安全测试技术与工具选择
    关键技术点:1.认证与授权:检查API是否实施了强大的身份验证机制,如OAuth2.0、JWT,并验证授权逻辑是否严谨。2.输入验证:测试API对用户输入的处理,确保有效防止SQL注入、跨站脚本(XSS)等攻击。3.数据加密:评估传输层安全(TLS)配置以及敏感数据在存储和传输时的加密策略。4.速率限......
  • Hadoop 第五周总结
    Hadoop第四周总结本周在学习Hadoop过程中,涉及了一些重要的概念和技术。Hadoop作为一个开源的分布式计算平台,对大数据处理有着重要的应用和影响。以下是本周的学习总结:1.学习MapReduce编程模型本周的重点是理解和实践MapReduce编程模型。MapReduce是Hadoop的核心组件之一,用于......