k8s技术总结(一)

打印 上一主题 下一主题

主题 902|帖子 902|积分 2706

在学习完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 集群交互的主要命令行工具。其基本语法结构为:
  1. kubectl [command] [TYPE] [NAME] [flags]
复制代码
2、常见操作命令
集群相关
  1. # 查看所有节点
  2. kubectl get nodes
  3. # 查看集群信息
  4. kubectl cluster-info
复制代码
pod:Pod 是 Kubernetes 中的最小可部署单元,代表一组紧密耦合的容器。每个 Pod 包含一个或多个容器,这些容器共享网络和存储。通常,一个 Pod 运行一个主容器(比方,Web服务器),以及一些辅助容器(如日记收集、监控署理等)。
Pod 通常不直接创建,而是通过更高级别的控制器(如 Deployment)来管理。
相关操作:
  1. # 查看Pod列表
  2. kubectl get pods
  3. # 查看指定命名空间下的Pod
  4. kubectl get pods -n <namespace>
  5. # 详细描述Pod:输出Pod的详细信息,包括事件、状态、配置信息等
  6. kubectl describe pod <pod-name>
  7. # 查看Pod的日志
  8. kubectl logs <pod-name>
  9. # 进入Pod的容器
  10. kubectl exec -it <pod-name> -- /bin/bash
  11. # 删除Pod
  12. kubectl delete pod <pod-name> --force
复制代码
service:是一种用于定义一组 Pod 的网络访问策略的资源对象。它为外部系统或内部组件提供了稳定的访问入口,纵然这些 Pod 的 IP 地址会随着 Pod 的创建和销毁而变革。Service 通过将流量分发到符合选择条件的 Pod 来实现负载均衡。
Kubernetes 支持多种类型的 Service,不同类型的 Service 适用于不同的网络需求:

  • ClusterIP(默认类型)

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

  • NodePort

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

  • LoadBalancer

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

  • ExternalName

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

相关操作:
  1. # 查看Service列表:列出所有Service及其对应的ClusterIP、外部IP等信息
  2. kubectl get services
  3. # 查看Service详细信息
  4. kubectl describe service <service-name>
  5. # 删除service
  6. kubectl delete service <service-name>
复制代码
deployment:Deployment 是一种用于管理应用程序的 Kubernetes 控制器。它提供声明式更新机制,使你可以大概管理应用的副本数量、更新策略等。Deployment 是管理 Pod 的常用方式,它确保指定数量的 Pod 始终运行,而且可以自动执行滚动更新和回滚操作。
相关操作:
  1. # 创建Deployment:使用指定镜像创建一个新的Deployment
  2. kubectl create deployment <deployment-name> --image=<image-name>
  3. # 查看Deployment列表
  4. kubectl get deployments
  5. # 查看Deployment详细信息
  6. kubectl describe deployment <deployment-name>
  7. # 更新Deployment的镜像:更新Deployment中容器的镜像,会触发滚动更新
  8. kubectl set image deployment/<deployment-name> <container-name>=<new-image>
  9. # 扩展或缩减Deployment的Pod副本数
  10. kubectl scale deployment <deployment-name> --replicas=<number>
  11. # 编辑Deployment
  12. kubectl edit deployment <deployment-name>
  13. # 删除Deployment
  14. kubectl delete deployment <deployment-name>
复制代码
ConfigMap资源:是 Kubernetes 中用于存储非机密配置信息的对象。它将配置信息以键值对的形式存储,可以将这些配置注入到容器中作为环境变量、命令行参数,或挂载为文件。ConfigMap 允许配置与容器镜像分离,使得应用程序更易于配置和管理。
相关操作:
  1. # 创建ConfigMap
  2. kubectl create configmap <configmap-name> --from-literal=<key>=<value>
  3. # 查看ConfigMap列表
  4. kubectl get configmaps
  5. # 查看ConfigMap详细信息
  6. kubectl describe configmap <configmap-name>
  7. # 编辑Configmap
  8. kubectl edit configmap <configmap-name>
复制代码
定名空间:是 Kubernetes 中用于资源隔离的逻辑分区。它允许你在同一个集群中隔离不同的项目或团队的资源。每个 Namespace 之间的资源是独立的,比方 Pod、Service 等,因此可以制止不同应用或团队之间的冲突。
相关操作:
  1. # 查看命名空间列表
  2. kubectl get namespaces
  3. # 创建新的命名空间
  4. kubectl create namespace <namespace-name>
  5. # 删除命名空间
  6. kubectl delete namespace <namespace-name>
  7. # 在指定命名空间中操作:可以用 -n 标志指定操作的命名空间
  8. kubectl get pods -n <namespace-name>
复制代码
资源监控
  1. # 持续监控pod
  2. kubectl get pods -w
  3. # 监控特定资源
  4. kubectl top pod
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表