-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
270 lines (154 loc) · 27.8 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hexo</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta property="og:type" content="website">
<meta property="og:title" content="Hexo">
<meta property="og:url" content="http://example.com/index.html">
<meta property="og:site_name" content="Hexo">
<meta property="og:locale" content="en_US">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary">
<link rel="alternate" href="/atom.xml" title="Hexo" type="application/atom+xml">
<link rel="shortcut icon" href="/favicon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/index.min.css">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/fancybox/jquery.fancybox.min.css">
<meta name="generator" content="Hexo 6.3.0"></head>
<body>
<div id="container">
<div id="wrap">
<header id="header">
<div id="banner"></div>
<div id="header-outer" class="outer">
<div id="header-title" class="inner">
<h1 id="logo-wrap">
<a href="/" id="logo">Hexo</a>
</h1>
</div>
<div id="header-inner" class="inner">
<nav id="main-nav">
<a id="main-nav-toggle" class="nav-icon"></a>
<a class="main-nav-link" href="/">Home</a>
<a class="main-nav-link" href="/archives">Archives</a>
</nav>
<nav id="sub-nav">
<a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS Feed"></a>
<a id="nav-search-btn" class="nav-icon" title="Search"></a>
</nav>
<div id="search-form-wrap">
<form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit"></button><input type="hidden" name="sitesearch" value="http://example.com"></form>
</div>
</div>
</div>
</header>
<div class="outer">
<section id="main">
<article id="post-Centos7配置k8s服务" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/04/04/Centos7%E9%85%8D%E7%BD%AEk8s%E6%9C%8D%E5%8A%A1/" class="article-date">
<time class="dt-published" datetime="2023-04-04T13:58:03.000Z" itemprop="datePublished">2023-04-04</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="p-name article-title" href="/2023/04/04/Centos7%E9%85%8D%E7%BD%AEk8s%E6%9C%8D%E5%8A%A1/">Centos7配置k8s服务</a>
</h1>
</header>
<div class="e-content article-entry" itemprop="articleBody">
<h2 id="卸载旧版docker"><a href="#卸载旧版docker" class="headerlink" title="卸载旧版docker"></a>卸载旧版docker</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ yum remove docker docker-client docker-client-latest \</span><br><span class="line"> docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine</span><br></pre></td></tr></table></figure>
<blockquote>
<p>上述卸载命令并不会删除路径 /var/lib/docker/下的内容,此路径下所包含的 Docker 数据(镜像、容器、卷、网络)可以在新版 Docker下继续使用。最新版 Docker 的安装包名为 docker-ce.</p>
</blockquote>
<h2 id="安装docker"><a href="#安装docker" class="headerlink" title="安装docker"></a>安装docker</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#安装必要的系统工具</span></span><br><span class="line">yum install yum-utils device-mapper-persistent-data lvm2</span><br><span class="line"><span class="comment">#添加yum软件源</span></span><br><span class="line">wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo</span><br><span class="line"><span class="comment">#安装</span></span><br><span class="line">yum install docker-ce</span><br><span class="line"><span class="comment">#自启动</span></span><br><span class="line">systemctl <span class="built_in">enable</span> docker && systemctl start docker</span><br><span class="line"></span><br><span class="line"><span class="comment">#配置国内镜像</span></span><br><span class="line"><span class="built_in">cat</span> <<<span class="string">EOF | sudo tee /etc/docker/daemon.json</span></span><br><span class="line"><span class="string">{</span></span><br><span class="line"><span class="string"> "registry-mirrors": [</span></span><br><span class="line"><span class="string"> "https://hub-mirror.c.163.com",</span></span><br><span class="line"><span class="string"> "https://mirror.baidubce.com"</span></span><br><span class="line"><span class="string"> ]</span></span><br><span class="line"><span class="string">}</span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#重启服务</span></span><br><span class="line">systemctl daemon-reload</span><br><span class="line">systemctl restart docker</span><br><span class="line"></span><br><span class="line"><span class="comment">#添加docker用户分组(省略sudo启动)</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#确认生效</span></span><br><span class="line">docker info</span><br></pre></td></tr></table></figure>
<h2 id="安装cri-dockerd"><a href="#安装cri-dockerd" class="headerlink" title="安装cri-dockerd"></a>安装cri-dockerd</h2><blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;在Kubernetes v1.24及更早版本中,你可以在Kubernetes中使用Docker Engine,依赖于一个称作dockershim的内置 Kubernetes组件。dockershim组件在Kubernetes v1.24发行版本中已被移除;不过,一种来自第三方的替代品,cri-dockerd 是可供使用的。cri-dockerd适配器允许你通过容器运行时接口(Container Runtime Interface,CRI)来使用 Docker Engine。</p>
</blockquote>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#下载cri-dockerd安装包</span></span><br><span class="line">wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm</span><br><span class="line"><span class="comment">#安装cri-dockerd</span></span><br><span class="line">rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm</span><br><span class="line"></span><br><span class="line"><span class="comment">#修改镜像地址为国内,否则kubelet拉取不了镜像导致启动失败</span></span><br><span class="line">vim /usr/lib/systemd/system/cri-docker.service</span><br><span class="line"></span><br><span class="line">ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7</span><br><span class="line"></span><br><span class="line"><span class="comment">#启动cri-dockerd</span></span><br><span class="line">systemctl daemon-reload </span><br><span class="line">systemctl <span class="built_in">enable</span> cri-docker && systemctl start cri-docker</span><br></pre></td></tr></table></figure>
<h2 id="系统初始化配置"><a href="#系统初始化配置" class="headerlink" title="系统初始化配置"></a>系统初始化配置</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#关闭防火墙</span></span><br><span class="line">systemctl stop firewalld</span><br><span class="line">systemctl <span class="built_in">disable</span> firewalld</span><br><span class="line"></span><br><span class="line"><span class="comment">#关闭selinux</span></span><br><span class="line"><span class="comment">#永久关闭</span></span><br><span class="line">sed -i <span class="string">'s/enforcing/disabled/'</span> /etc/selinux/config</span><br><span class="line"><span class="comment">#临时关闭</span></span><br><span class="line">setenforce 0</span><br><span class="line"></span><br><span class="line"><span class="comment">#在所有节点上关闭swap分区</span></span><br><span class="line"><span class="comment">#临时关闭</span></span><br><span class="line">swapoff -a</span><br><span class="line"><span class="comment">#永久关闭</span></span><br><span class="line">sed -ri <span class="string">'s/.*swap.*/#&/'</span> /etc/fstab</span><br><span class="line"></span><br><span class="line"><span class="comment">#根据规划设置主机名</span></span><br><span class="line">hostnamectl set-hostname <hostname> && bash</span><br><span class="line"></span><br><span class="line"><span class="comment">#在master和worker节点添加hosts(与主机名一致)</span></span><br><span class="line">vim /etc/hosts</span><br><span class="line">192.168.58.130 k8s-master130</span><br><span class="line">192.168.58.135 k8s-node135</span><br><span class="line">192.168.58.136 k8s-node136</span><br><span class="line"></span><br><span class="line"><span class="comment">#将桥接的IPv4流量传递到iptables的链(worker节点配置)</span></span><br><span class="line"><span class="built_in">cat</span> <<<span class="string">EOF | sudo tee /etc/sysctl.d/k8s.conf</span></span><br><span class="line"><span class="string">net.bridge.bridge-nf-call-ip6tables = 1</span></span><br><span class="line"><span class="string">net.bridge.bridge-nf-call-iptables = 1</span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"><span class="comment">#流量桥接生效</span></span><br><span class="line">sysctl --system </span><br><span class="line"></span><br><span class="line"><span class="comment">#时间同步</span></span><br><span class="line">yum install ntpdate -y</span><br><span class="line">ntpdate time.windows.com</span><br></pre></td></tr></table></figure>
<h2 id="安装kubernetes-k8s"><a href="#安装kubernetes-k8s" class="headerlink" title="安装kubernetes (k8s)"></a>安装kubernetes (k8s)</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#添加kubernetes软件源</span></span><br><span class="line"><span class="built_in">cat</span> <<<span class="string">EOF | sudo tee /etc/yum.repos.d/kubernetes.repo</span></span><br><span class="line"><span class="string">[kubernetes]</span></span><br><span class="line"><span class="string">name=Kubernetes</span></span><br><span class="line"><span class="string">baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64</span></span><br><span class="line"><span class="string">enabled=1</span></span><br><span class="line"><span class="string">gpgcheck=0</span></span><br><span class="line"><span class="string">repo_gpgcheck=0</span></span><br><span class="line"><span class="string">gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg</span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#安装kubeadm、kubelet、kubectl</span></span><br><span class="line"> <span class="comment">#kubeadm:用来初始化集群的指令;</span></span><br><span class="line"> <span class="comment">#kubelet:在集群中的每个节点上用来启动Pod和容器等;</span></span><br><span class="line"> <span class="comment">#kubectl:用来与集群通信的命令行工具</span></span><br><span class="line"></span><br><span class="line">kubectl:用来与集群通信的命令行工具。)</span><br><span class="line">yum install -y kubelet kubeadm kubectl</span><br><span class="line"><span class="comment">#自启动</span></span><br><span class="line">systemctl <span class="built_in">enable</span> kubelet</span><br><span class="line"></span><br><span class="line"><span class="comment">#在master节点初始化kubernetes。</span></span><br><span class="line">kubeadm init \</span><br><span class="line"> --apiserver-advertise-address=master节点IP \</span><br><span class="line"> --image-repository registry.aliyuncs.com/google_containers \</span><br><span class="line"> --kubernetes-version v1.26.0 \</span><br><span class="line"> --service-cidr=10.96.0.0/12 \</span><br><span class="line"> --pod-network-cidr=10.244.0.0/16 \</span><br><span class="line"> --cri-socket=unix:///var/run/cri-dockerd.sock \</span><br><span class="line"> --ignore-preflight-errors=all</span><br><span class="line"></span><br><span class="line"><span class="comment">#按提示拷贝kubectl使用的k8s连接认证文件(每次初始化都需要更新)</span></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="variable">$HOME</span>/.kube</span><br><span class="line">sudo <span class="built_in">cp</span> -i /etc/kubernetes/admin.conf <span class="variable">$HOME</span>/.kube/config</span><br><span class="line">sudo <span class="built_in">chown</span> $(<span class="built_in">id</span> -u):$(<span class="built_in">id</span> -g) <span class="variable">$HOME</span>/.kube/config</span><br><span class="line"></span><br><span class="line"><span class="comment">#将worker节点加入集群管理</span></span><br><span class="line">kubeadm <span class="built_in">join</span> 192.168.xxx.xxx:6443 --token xxxx.xxxxxxxxxxx \</span><br><span class="line"> --discovery-token-ca-cert-hash sha256:07c1765ff4ac6eb2e54ed69fa57ca1afc728e825a6d4a11a83c96ff60ea545cd \</span><br><span class="line"> --cri-socket /var/run/cri-dockerd.sock</span><br><span class="line"></span><br><span class="line"><span class="comment">#在master节点查看worker节点(NotReady状态)</span></span><br><span class="line">kubectl get nodes</span><br><span class="line"></span><br><span class="line"><span class="comment">#部署网络插件(Ready状态)</span></span><br><span class="line">wget https://docs.projectcalico.org/manifests/calico.yaml</span><br><span class="line"></span><br><span class="line"><span class="comment">#下载完后修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的--pod-network-cidr指定的一样,修改完以后执行部署命令。</span></span><br><span class="line">kubectl apply -f calico.yaml</span><br><span class="line">kubectl get pods -n kube-system</span><br><span class="line">kubectl get nodes</span><br></pre></td></tr></table></figure>
<blockquote>
<p>–apiserver-advertise-address:集群通告地址 <br>–image-repository:由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址 <br>–kubernetes-version:K8s版本,与上面安装的一致 <br>–service-cidr:集群内部虚拟网络,Pod统一访问入口 <br>–pod-network-cidr:Pod网络,与下面部署的CNI网络组件yaml中保持一致 <br>–cri-socket:指定cri-dockerd接口,如果是containerd则使用unix:///run/containerd/containerd.sock</p>
</blockquote>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#部署Dashboard(可选)</span></span><br><span class="line">https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml</span><br><span class="line">默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部访问,修改如下:</span><br><span class="line">vim recommended.yaml</span><br></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">kind: Service</span><br><span class="line">apiVersion: v1</span><br><span class="line">metadata:</span><br><span class="line"> labels:</span><br><span class="line"> k8s-app: kubernetes-dashboard</span><br><span class="line"> name: kubernetes-dashboard</span><br><span class="line"> namespace: kubernetes-dashboard</span><br><span class="line">spec:</span><br><span class="line"> ports:</span><br><span class="line"> - port: 443</span><br><span class="line"> targetPort: 8443</span><br><span class="line"> nodePort: 30001</span><br><span class="line"> selector:</span><br><span class="line"> k8s-app: kubernetes-dashboard</span><br><span class="line"> <span class="built_in">type</span>: NodePort</span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">#修改后执行加载命令</span><br><span class="line">kubectl apply -f recommended.yaml</span><br><span class="line">kubectl get pods -n kubernetes-dashboard</span><br><span class="line"></span><br><span class="line">#创建service account并绑定默认cluster-admin管理员集群角色</span><br><span class="line">#创建用户</span><br><span class="line">kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard</span><br><span class="line">#用户授权</span><br><span class="line">kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin</span><br><span class="line">#获取用户Token</span><br><span class="line">kubectl create token dashboard-admin -n kubernetes-dashboard</span><br><span class="line"></span><br><span class="line">访问地址: https://nodeip:30001,使用输出的token登录Dashboard</span><br></pre></td></tr></table></figure>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/04/04/Centos7%E9%85%8D%E7%BD%AEk8s%E6%9C%8D%E5%8A%A1/" data-id="clg2butf20000c7i55mrxceh1" data-title="Centos7配置k8s服务" class="article-share-link">Share</a>
</footer>
</div>
</article>
<article id="post-hello-world" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/04/04/hello-world/" class="article-date">
<time class="dt-published" datetime="2023-04-04T13:09:12.280Z" itemprop="datePublished">2023-04-04</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="p-name article-title" href="/2023/04/04/hello-world/">Hello World</a>
</h1>
</header>
<div class="e-content article-entry" itemprop="articleBody">
<p>Welcome to <a target="_blank" rel="noopener" href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a target="_blank" rel="noopener" href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a target="_blank" rel="noopener" href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a target="_blank" rel="noopener" href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">"My New Post"</span></span><br></pre></td></tr></table></figure>
<p>More info: <a target="_blank" rel="noopener" href="https://hexo.io/docs/writing.html">Writing</a></p>
<h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure>
<p>More info: <a target="_blank" rel="noopener" href="https://hexo.io/docs/server.html">Server</a></p>
<h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure>
<p>More info: <a target="_blank" rel="noopener" href="https://hexo.io/docs/generating.html">Generating</a></p>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure>
<p>More info: <a target="_blank" rel="noopener" href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/04/04/hello-world/" data-id="clg2butf70001c7i529dn3r7s" data-title="Hello World" class="article-share-link">Share</a>
</footer>
</div>
</article>
</section>
<aside id="sidebar">
<div class="widget-wrap">
<h3 class="widget-title">Archives</h3>
<div class="widget">
<ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2023/04/">April 2023</a></li></ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">Recent Posts</h3>
<div class="widget">
<ul>
<li>
<a href="/2023/04/04/Centos7%E9%85%8D%E7%BD%AEk8s%E6%9C%8D%E5%8A%A1/">Centos7配置k8s服务</a>
</li>
<li>
<a href="/2023/04/04/hello-world/">Hello World</a>
</li>
</ul>
</div>
</div>
</aside>
</div>
<footer id="footer">
<div class="outer">
<div id="footer-info" class="inner">
© 2023 John Doe<br>
Powered by <a href="https://hexo.io/" target="_blank">Hexo</a>
</div>
</div>
</footer>
</div>
<nav id="mobile-nav">
<a href="/" class="mobile-nav-link">Home</a>
<a href="/archives" class="mobile-nav-link">Archives</a>
</nav>
<script src="/js/jquery-3.4.1.min.js"></script>
<script src="/fancybox/jquery.fancybox.min.js"></script>
<script src="/js/script.js"></script>
</div>
</body>
</html>