<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kubernetes on wellzhi</title><link>https://wellzhi.github.io/tags/kubernetes/</link><description>Recent content in Kubernetes on wellzhi</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 01 Jan 2024 04:14:54 -0800</lastBuildDate><atom:link href="https://wellzhi.github.io/tags/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>Kubernetes使用指南</title><link>https://wellzhi.github.io/posts/tech/2023-01-01_k8s/</link><pubDate>Mon, 01 Jan 2024 04:14:54 -0800</pubDate><guid>https://wellzhi.github.io/posts/tech/2023-01-01_k8s/</guid><description>&lt;!-- # Kubernetes使用指南：从入门到实践
## 目录
1. [Kubernetes简介](#1-kubernetes简介)
2. [核心概念与架构](#2-核心概念与架构)
3. [环境搭建与安装](#3-环境搭建与安装)
4. [基础资源对象](#4-基础资源对象)
5. [工作负载管理](#5-工作负载管理)
6. [服务发现与负载均衡](#6-服务发现与负载均衡)
7. [存储管理](#7-存储管理)
8. [配置管理](#8-配置管理)
9. [网络管理](#9-网络管理)
10. [安全管理](#10-安全管理)
11. [监控与日志](#11-监控与日志)
12. [高级特性](#12-高级特性)
13. [故障排查](#13-故障排查)
14. [最佳实践](#14-最佳实践)
15. [生产环境部署](#15-生产环境部署) -->
&lt;h2 id="1-kubernetes简介">1. Kubernetes简介&lt;/h2>
&lt;h3 id="11-什么是kubernetes">1.1 什么是Kubernetes&lt;/h3>
&lt;p>Kubernetes（简称K8s）是一个开源的容器编排平台，用于自动化部署、扩展和管理容器化应用程序。它最初由Google开发，现在由Cloud Native Computing Foundation（CNCF）维护。&lt;/p>
&lt;h3 id="12-核心特性">1.2 核心特性&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>自动化部署和回滚&lt;/strong>：支持应用的自动化部署和版本回滚&lt;/li>
&lt;li>&lt;strong>服务发现和负载均衡&lt;/strong>：自动分配IP地址和DNS名称，并在多个容器间分配负载&lt;/li>
&lt;li>&lt;strong>存储编排&lt;/strong>：自动挂载存储系统，包括本地存储、公有云存储等&lt;/li>
&lt;li>&lt;strong>自我修复&lt;/strong>：重启失败的容器，替换和重新调度节点上的容器&lt;/li>
&lt;li>&lt;strong>密钥和配置管理&lt;/strong>：管理敏感信息和应用配置&lt;/li>
&lt;li>&lt;strong>水平扩展&lt;/strong>：根据CPU使用率或其他指标自动扩展应用&lt;/li>
&lt;/ul>
&lt;h3 id="13-使用场景">1.3 使用场景&lt;/h3>
&lt;ul>
&lt;li>微服务架构部署&lt;/li>
&lt;li>容器化应用管理&lt;/li>
&lt;li>多云和混合云部署&lt;/li>
&lt;li>DevOps和CI/CD流水线&lt;/li>
&lt;li>大规模应用编排&lt;/li>
&lt;/ul>
&lt;h2 id="2-核心概念与架构">2. 核心概念与架构&lt;/h2>
&lt;h3 id="21-集群架构">2.1 集群架构&lt;/h3>
&lt;p>Kubernetes集群由以下组件组成：&lt;/p>
&lt;h4 id="211-master节点">2.1.1 Master节点&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>API Server&lt;/strong>：集群的统一入口，提供RESTful API&lt;/li>
&lt;li>&lt;strong>etcd&lt;/strong>：分布式键值存储，保存集群状态数据&lt;/li>
&lt;li>&lt;strong>Controller Manager&lt;/strong>：运行控制器进程，管理集群状态&lt;/li>
&lt;li>&lt;strong>Scheduler&lt;/strong>：负责Pod的调度决策&lt;/li>
&lt;/ul>
&lt;h4 id="212-worker节点">2.1.2 Worker节点&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>kubelet&lt;/strong>：节点代理，管理Pod生命周期&lt;/li>
&lt;li>&lt;strong>kube-proxy&lt;/strong>：网络代理，实现服务的网络规则&lt;/li>
&lt;li>&lt;strong>Container Runtime&lt;/strong>：容器运行时（如Docker、containerd）&lt;/li>
&lt;/ul>
&lt;h3 id="22-核心对象">2.2 核心对象&lt;/h3>
&lt;h4 id="221-pod">2.2.1 Pod&lt;/h4>
&lt;p>最小的部署单元，包含一个或多个容器：&lt;/p></description></item><item><title>GitLab CI/CD部署流程详解</title><link>https://wellzhi.github.io/posts/tech/2023-09-01_ci-cd/</link><pubDate>Fri, 01 Sep 2023 15:11:47 +0800</pubDate><guid>https://wellzhi.github.io/posts/tech/2023-09-01_ci-cd/</guid><description>&lt;p>本文将详细介绍基于GitLab CI/CD的xxxx系统后端自动化部署流程。整个流程采用了多阶段部署策略，实现了从代码构建到多环境部署的全自动化。&lt;/p>
&lt;h2 id="一部署流程概述">一、部署流程概述&lt;/h2>
&lt;p>整个部署流程分为以下几个阶段：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>安装阶段&lt;/strong>：编译打包Java项目&lt;/li>
&lt;li>&lt;strong>构建镜像阶段&lt;/strong>：使用Kaniko构建Docker镜像&lt;/li>
&lt;li>&lt;strong>生成CI配置阶段&lt;/strong>：动态生成子流水线配置&lt;/li>
&lt;li>&lt;strong>部署阶段&lt;/strong>：触发子流水线，将应用部署到Kubernetes集群&lt;/li>
&lt;/ol>
&lt;h2 id="二流水线配置详解">二、流水线配置详解&lt;/h2>
&lt;h3 id="21-流水线阶段定义">2.1 流水线阶段定义&lt;/h3>
&lt;p>在&lt;code>.gitlab-ci.yml&lt;/code>文件中，定义了整个流水线的阶段：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">stages&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">install&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">build-image&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">generate-ci&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">deploy&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="22-全局变量配置">2.2 全局变量配置&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">variables&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">PROJECT_PATH&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$CI_PROJECT_DIR&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">MAVEN_OPTS&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;-Dmaven.repo.local=$PROJECT_PATH/.m2/repository&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">REPO_NAME&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;ikc-backend-v1&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">MAVEN_CACHE_DIR&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$PROJECT_PATH/.m2/repository&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">BUILD_CACHE_DIR&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$PROJECT_PATH/cache&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">VERSION&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;$CI_PIPELINE_IID&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>关键变量说明：&lt;/p>
&lt;ul>
&lt;li>&lt;code>PROJECT_PATH&lt;/code>：项目路径，使用GitLab内置变量&lt;code>CI_PROJECT_DIR&lt;/code>&lt;/li>
&lt;li>&lt;code>REPO_NAME&lt;/code>：镜像仓库名称&lt;/li>
&lt;li>&lt;code>VERSION&lt;/code>：版本号，使用GitLab流水线ID作为版本号&lt;/li>
&lt;/ul>
&lt;h2 id="三部署流程详解">三、部署流程详解&lt;/h2>
&lt;h3 id="31-安装阶段install">3.1 安装阶段（Install）&lt;/h3>
&lt;p>这个阶段负责编译和打包Java项目：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">install&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">&amp;lt;&amp;lt;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="cp">*install_template&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>install_template&lt;/code>模板定义了具体的执行步骤：&lt;/p></description></item></channel></rss>