Skip to main content

· 13 min read

K8S的概念

Kubernetes(简称K8s)是一个开源的容器集群管理系统,它可以自动化容器化应用程序的部署、扩展和管理。在Kubernetes中,一些核心概念包括:

  1. Pod:Pod是Kubernetes的最小部署单元,它封装了应用程序的运行环境和一组容器。一个Pod可以包含一个或多个容器,这些容器共享存储、网络和运行资源。
  2. Service:Service是Kubernetes中用于将多个Pod暴露给外部访问的一种机制。它定义了一个运行公共端口和负载均衡策略,将多个Pod实例组合成一个服务。
  3. Replication Controller(RC)和Replica Set:RC和Replica Set用于确保集群中存在指定数量的Pod副本。如果副本数量不足,控制器会自动创建新的Pod实例;如果副本数量过多,它会自动删除多余的实例。
  4. Deployment:Deployment是Kubernetes的一个高级资源对象,它基于RC和Replica Set,提供了声明式更新、回滚和扩展等更多功能。
  5. Labels和Selectors:Labels是用于标识资源的键值对,而Selectors则是基于Labels来选择资源的条件。通过使用Labels和Selectors,可以对集群中的资源进行分类、组织和管理。
  6. Namespace:Namespace将集群划分为多个虚拟集群,每个Namespace可以独立地进行资源管理和命名空间隔离。
  7. API对象:Kubernetes中的各种资源都定义为API对象,这些对象可以通过Kubernetes API进行创建、查询、更新和删除等操作。
  8. etcd:etcd是Kubernetes的分布式键值存储系统,用于存储整个集群的状态信息。
  9. Master节点和Node节点:Master节点负责集群的管理和控制,包括调度、复制、服务发现等任务;而Node节点则负责运行容器化应用程序。

这些概念共同构成了Kubernetes的核心架构和功能。通过这些概念的组合和配置,可以实现大规模的容器管理和自动化部署等功能。

电商系统在K8S中的拆解

在Kubernetes中,一个电商系统可以以如下方式存在:

  1. Pod:Pod是电商系统的运行环境。每个电商系统的组件(如Web前端、后端服务、数据库等)都可以部署在一个或多个Pod中。通过定义Pod的配置文件,可以指定容器镜像、资源限制、环境变量等参数,确保电商系统的各个组件正常运行。
  2. Service:Service为电商系统的各个组件提供网络访问和服务发现功能。根据功能和业务需求,可以将电商系统中的组件划分为不同的Service,并配置适当的网络策略和负载均衡规则。通过Service,可以实现跨Pod的访问和流量分发,确保系统的可靠性和扩展性。
  3. Replication Controller(RC)和Replica Set:为了确保电商系统的可用性和容错能力,可以使用RC和Replica Set来管理Pod的副本数量。例如,可以配置一个RC来确保Web前端有多个副本在运行,以实现高可用性和水平扩展。如果某个副本出现故障,Replica Set会自动创建新的副本以维持所需的数量。
  4. Deployment:Deployment为电商系统提供了声明式更新和版本控制功能。通过定义Deployment的配置文件,可以指定容器镜像、资源限制、Pod模板等参数,并关联一个或多个Service。当更新Deployment时,Kubernetes会自动应用更新并保持服务的可用性。
  5. Labels和Selectors:Labels用于标识和组织电商系统中的资源。通过在Pod、Service等资源上添加适当的Labels,可以方便地使用Selectors来选择和管理相关资源。例如,可以使用Labels来区分不同的业务组件或环境,并针对不同的Labels执行相应的管理和调度策略。
  6. Namespace:Namespace可以将电商系统划分为不同的环境或子系统,如开发、测试、生产等。通过将资源分配到不同的Namespace中,可以实现资源的隔离和命名空间的划分,便于管理和维护。
  7. API对象:在电商系统中,各种资源(如Pod、Service、RC等)都是以API对象的形式定义的。通过Kubernetes API进行资源的管理和操作,可以实现自动化部署、扩展和监控等功能。
  8. etcd:etcd用于存储电商系统的状态信息,如配置数据、动态数据等。通过etcd,可以实现数据的可靠存储和实时同步,确保系统的稳定性和一致性。
  9. Master节点和Node节点:Master节点负责集群的管理和控制,包括调度、复制、服务发现等任务;而Node节点则负责运行电商系统的各个组件和容器。通过合理配置Master节点和Node节点,可以实现资源的优化利用和系统的可伸缩性。

综上所述,Kubernetes提供了丰富的组件和概念来支持电商系统的部署和管理。通过合理利用这些组件和概念,可以实现自动化部署、弹性扩展、高可用性和容错能力等功能,保障电商系统的稳定运行和可靠性。

K8S组件对电商系统业务和安全的支撑

当电商系统是基于微服务构建时,Kubernetes的配置解决方案可以更加具体和复杂。以下是一些具体的Kubernetes配置,以帮助您成功上线项目:

  1. 定义Deployment和Service
    • 对于每个微服务或子系统,创建一个Deployment来定义容器镜像、资源限制和重启策略。
    • 为每个微服务或子系统创建一个Service,以确保外部访问和内部通信。根据需要配置负载均衡、端口映射和选择器。
  2. 使用ConfigMap和Secret
    • 对于配置文件、参数或密钥等敏感信息,使用ConfigMap来存储和管理。
    • 对于需要加密的信息,使用Secret来保护敏感数据。确保将ConfigMap和Secret正确地注入到容器中。
  3. 使用Ingress进行外部访问
    • 如果需要从外部网络访问电商系统的某些服务,可以使用Ingress来提供反向代理和路由功能。配置Ingress规则,将外部流量路由到相应的Service。
  4. 使用Horizontal Pod Autoscaler
    • 根据业务需求和性能指标,为每个微服务或子系统配置一个Horizontal Pod Autoscaler。这样可以根据流量、资源使用情况或其他指标动态调整Pod副本数量。
  5. 监控和日志
    • 使用Kubernetes的监控工具(如Prometheus、Grafana等)来收集和分析性能指标、容器资源使用情况等。
    • 使用日志收集工具(如ELK Stack、Fluentd等)来集中管理日志,以便于分析和故障排查。
  6. 网络策略和安全
    • 根据安全需求配置网络策略,限制容器之间的网络通信。例如,使用Network Policies来定义允许或拒绝的流量规则。
    • 使用Kubernetes的安全功能,如身份验证、授权和密钥管理等,确保集群的安全性。
  7. 持久化存储
    • 对于需要持久化存储的数据,使用Kubernetes的持久卷(Persistent Volume)和持久卷声明(Persistent Volume Claim)来管理存储资源。选择合适的持久卷类型,如GCE Persistent Disk、Azure Disk、AWS Elastic Block Store等。
  8. 资源管理
    • 使用Kubernetes的资源管理功能来控制容器化的应用程序的资源使用情况,例如CPU和内存限制。通过设置资源限制,可以防止资源过度消耗或争用。
  9. 回滚和更新策略
    • 使用Deployment的回滚功能来快速恢复到先前的版本,确保业务连续性。
    • 制定明确的更新策略,包括滚动更新、蓝绿部署等,以降低风险并保持系统的稳定性。
  10. 部署策略和发布流程
    • 制定合适的部署策略,如一次性部署、滚动部署或蓝绿部署。定义一个标准化的发布流程,以确保团队成员遵循相同的最佳实践。
  11. 集成CI/CD管道
    • 将Kubernetes集成到持续集成(CI)和持续部署(CD)管道中,以便自动化构建、测试、部署等过程。使用工具如Jenkins、GitLab CI/CD等与Kubernetes集成,提高开发效率和可靠性。
  12. 测试和验证
    • 在上线之前,进行充分的测试和验证,包括单元测试、集成测试和端到端测试。确保所有组件都能正确地交互并满足业务需求。在生产环境中持续监控系统性能和健康状况。
  13. 灾难恢复和备份策略
    • 制定灾难恢复计划和备份策略,确保在发生故障时能够快速恢复数据和应用程序的状态。定期备份关键数据和配置信息,并将其存储在安全的位置。
  14. 日志和监控数据的备份与存储
    • 确保对日志、监控数据和其他重要信息的备份进行妥善管理。选择一个可靠的存储解决方案,如对象存储服务(如Amazon S3、Google Cloud Storage等),以长期保存这些数据。定期检查备份的完整性和可用性。
  15. 合规性和审计
    • 根据业务需求和合规性要求,确保Kubernetes集群的配置和操作符合相关法规和标准。实施审计策略,记录对Kubernetes集群的访问和使用情况,以确保安全性、合规性和问责制。

· One min read

今天登录VPS的时候发现欢迎信息显示了一些基本的硬件信息。如下:

新版本ubuntu已经支持动态的motd. 路径为/etc/update-motd.d,里面按照序号有多个文件。用户可以往里面添加脚本实现自定义欢迎信息。

除此之外,有两个服务也广受欢迎,它们分别是neofetch 和screenfetch。

neofetch

可以直接通过 sudo apt install neofetch 进行安装。 可以将其写入到 /etc/profile.d 路径,登录成功即可显示。效果如下:

screenfetch

用法同上,安装命令为 sudo apt install screenfetch .

· One min read

git 下使用指定私钥实现 ssh 免密推送拉取需要以下配置

Host github.com
HostName github.com
User git
IdentityFile #私钥路径,windows注意\
IdentitiesOnly yes

· One min read
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

· One min read
Gao Wei

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet