Rancher 2.4.4-K8S(自签名证书)高可用集群HA部署-online install
<p>安装说明:这是Rancher v2.4.4版本的在线安装文档,证书采用自签名证书(用官方一键生成脚本制作)。</p>
<hr />
<h1>一、准备集群</h1>
<p>请参见<a href="https://www.showdoc.com.cn/963349270507135?page_id=5846938653540965" title="另一个安装文档">另一个安装文档</a>,一直到<code>二、安装rancher</code>步骤前为止。</p>
<h1>二、安装rancher</h1>
<h2>1、安装配置Helm</h2>
<p>注意:Helm的3.x版本和2.x版本的安装配置是不同的。3.x版本只需要安装好Helm客户端就行,其他的啥都不用配置。如果你用的是Helm的2.x版本,那可以参考rancher中文文档中的安装配置Helm。
Helm是Kubernetes首选的包管理工具。Helm charts为Kubernetes YAML清单文档提供模板语法。使用Helm,我们可以创建可配置的部署,而不仅仅是使用静态文件。</p>
<h3>1.1 安装Helm客户端</h3>
<p>由于我这里是安装的Helm-v3.x版本,所以不需要配置Helm客户端的访问权限。</p>
<h3>1.2 安装Helm Server(Tiller)</h3>
<p>由于我这里是安装的Helm-v3.x版本,所以不需要安装Helm Server。</p>
<h2>2、Helm安装Rancher</h2>
<h3>2.1 添加Chart仓库地址</h3>
<p>使用helm repo add命令添加Rancher chart仓库地址,访问Rancher tag和Chart版本,替换<CHART_REPO>为您要使用的Helm仓库分支(即latest或stable)。
以rancher用户执行:</p>
<pre><code class="language-bash">helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo update </code></pre>
<h3>2.2 使用自签名SSL证书安装Rancher Server</h3>
<p>Rancher Server设计默认需要开启SSL/TLS配置来保证安全,将ssl证书以Kubernetes Secret卷的形式传递给Rancher Server或Ingress Controller。首先创建证书密文,以便Rancher和Ingress Controller可以使用。我这里使用官方提供的一键生成自签名ssl证书。</p>
<h4>2.2.1 如果没有自签名ssl证书,可以参考<a href="https://docs.rancher.cn/docs/rancher2/installation/options/self-signed-ssl/_index/#41-%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90-ssl-%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6%E8%84%9A%E6%9C%AC" title="自签名ssl证书,一键生成ssl证书">自签名ssl证书,一键生成ssl证书</a>。</h4>
<pre><code class="language-bash">[rancher@rancher-01 ~]$ mkdir ssl
[rancher@rancher-01 ~]$ cd ssl/</code></pre>
<p>先把一键生成ssl证书的脚本另存为<code>create_self-signed-cert.sh</code>,这里因为脚本的内容太多,就不贴出来了,详见<a href="https://www.showdoc.com.cn/963349270507135?page_id=5828190819902796" title="一键生成ssl证书链接">一键生成ssl证书链接</a>。然后再用这个脚本生成ssl证书</p>
<pre><code class="language-bash">[rancher@rancher-01 ~]$ ./create_self-signed-cert.sh --ssl-domain=rancher.hzsun.com --ssl-trusted-ip=172.16.68.188 --ssl-size=2048 --ssl-date=3650</code></pre>
<h4>2.2.2 一键生成的ssl自签名证书脚本将自动生成tls.crt、tls.key、cacerts.pem三个文件,文件名称不能修改。</h4>
<p>如果使用你自己生成的自签名ssl证书,则需要(我理解:一键生成则不需下面a、b步骤,安装后验证是否正确)
a、将服务证书(tls.crt)和CA中间证书(cacerts.pem)链合并到tls.crt文件中,
b、将私钥(tls.key)复制到或者重命名为tls.key文件,将CA证书(cacerts.pem)复制或重命名为cacerts.pem。</p>
<h4>2.2.3 使用kubectl在命名空间cattle-system中创建tls-ca和tls-rancher-ingress两个secret</h4>
<pre><code class="language-bash"># 创建命名空间
[rancher@rancher-01 ~]$ kubectl create namespace cattle-system
# 服务证书和私钥密文
[rancher@rancher-01 ~]$ kubectl -n cattle-system create \
secret tls tls-rancher-ingress \
--cert=/home/rancher/ssl/tls.crt \
--key=/home/rancher/ssl/tls.key
# ca证书密文
[rancher@rancher-01 ~]$ kubectl -n cattle-system create secret \
generic tls-ca \
--from-file=/home/rancher/ssl/cacerts.pem
#查看secret创建是否成功
[rancher@rancher-01 ~]$ kubectl -n cattle-system get secret
NAME TYPE DATA AGE
default-token-bwh4k kubernetes.io/service-account-token 3 4m12s
tls-ca Opaque 1 111s
tls-rancher-ingress kubernetes.io/tls 2 2m49s</code></pre>
<h4>2.2.4 安装Rancher Server</h4>
<pre><code class="language-bash">[rancher@rancher-01 ~]$ helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.hzsun.com \ #<您自己的域名>
--set ingress.tls.source=secret \
--set privateCA=true \
--version 2.4.4 指定rancher版本。</code></pre>
<p>注意:证书对应的域名需要与hostname选项匹配,否则ingress将无法代理访问Rancher。
rancher.hzsun.com是后面访问rancher的域名,需要在/etc/hosts文件中添加关联(所有主机):</p>
<pre><code class="language-bash">[rancher@rancher-01 ~]$ echo "172.16.7.200 rancher.hzsun.com" >> /etc/hosts
[rancher@rancher-01 ~]$ echo "172.16.7.201 rancher.hzsun.com" >> /etc/hosts
[rancher@rancher-01 ~]$ echo "172.16.7.202 rancher.hzsun.com" >> /etc/hosts
[rancher@rancher-01 ~]$ echo "172.16.7.203 rancher.hzsun.com" >> /etc/hosts</code></pre>
<p>输出</p>
<pre><code class="language-bash"> WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/rancher/.kube/config
NAME: rancher
LAST DEPLOYED: Wed Nov 25 08:17:53 2020
NAMESPACE: cattle-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Rancher Server has been installed.
NOTE: Rancher may take several minutes to fully initialize. Please standby while Certificates are being issued and Ingress comes up.
Check out our docs at https://rancher.com/docs/rancher/v2.x/en/
Browse to https://rancher.hzsun.com
Happy Containering!</code></pre>
<p>命令很快执行完毕,需要等待较长一段时间才能访问URL。</p>
<h2>3 验证 Rancher Server 是否已成功部署</h2>
<h3>3.1 检查 Rancher Server 是否运行成功:</h3>
<pre><code class="language-bassh">kubectl -n cattle-system rollout status deploy/rancher</code></pre>
<h3>3.2 通过运行以下命令来检查 deployment 的状态:</h3>
<pre><code class="language-bash">[rancher@rancher01 ~]$ kubectl -n cattle-system get deploy rancher
NAME READY UP-TO-DATE AVAILABLE AGE
rancher 3/3 3 3 6h</code></pre>
<h3>3.3 错误解决</h3>
<p>本地电脑host映射后,访问:<a href="https://rancher.hzsun.com">https://rancher.hzsun.com</a> 完成登录
若出现以下错误:</p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/bc13cf8cfc64e8c813df36f77e7cb485" alt="" /></p>
<p>解决办法:
由于我们通过 hosts 文件来添加映射,所以需要为 Agent Pod 添加主机别名(/etc/hosts):
(1)直接执行下面命令进行修改 cattle-cluster-agent</p>
<pre><code class="language-bash">kubectl -n cattle-system patch deployments cattle-cluster-agent --patch '{
"spec": {
"template": {
"spec": {
"hostAliases": [
{
"hostnames":
[
"rancher.hzsun.com"
],
"ip": "172.16.7.200"
}
]
}
}
}
}'</code></pre>
<p>(2)可以直接修改YAML,再重新部署应用,也能解决。
在81行与82行之间(未添加前的行数,可能稍有差别)添加如下四行内容:</p>
<pre><code class="language-bash"> hostAliases:
- hostnames:
- rancher.hzsun.com
ip: 172.16.7.200</code></pre>
<p>(3)直接执行下面命令进行修改 cattle-node-agent</p>
<pre><code class="language-bash">kubectl -n cattle-system patch daemonsets cattle-node-agent --patch '{
"spec": {
"template": {
"spec": {
"hostAliases": [
{
"hostnames":
[
"rancher.hzsun.com"
],
"ip": "172.16.7.200"
}
]
}
}
}
}'</code></pre>
<p>(4)可以直接修改YAML,再重新部署应用,也能解决。
在72行与73行之间左右(未添加前的行数,可能稍有差别)添加如下四行内容:</p>
<pre><code class="language-bash"> hostAliases:
- hostnames:
- rancher.hzsun.com
ip: 172.16.7.200</code></pre>
<h2>5 创建user-cluster集群</h2>
<h3>5.1 配置 rancher 国内源</h3>
<p>登录rancher
选择 “Global/settings/advanced settings 标签页中,找到 system-default-registry,编辑并输入下面内容:</p>
<pre><code class="language-bash">registry.cn-hangzhou.aliyuncs.com</code></pre>
<h3>5.2 给user-cluster集群添加worker主机</h3>
<p>worker节点安装时,需要开通的端口如下:</p>
<pre><code class="language-bash">firewall-cmd --zone=public --add-port=2379-2380/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --reload</code></pre>
<h3>5.3 主机需配置hosts文件</h3>
<p>把域名加入到所有主机的 /etc/hosts 文件中,</p>
<pre><code class="language-bash">echo '172.16.7.200 rancher.hzsun.com' >> /etc/hosts</code></pre>
<h3>5.4 前三台worker主机添加为</h3>
<pre><code class="language-bash">etcd,Control Palne,Worker</code></pre>
<p>复制命令,在各worker节点上执行。等待完成,需要好长一段时间,请耐心等待。</p>
<h3>5.5 若出现 4.3 步中的错误</h3>
<p>在user-cluster/system的Namespace:cattle-system下的应用cattle-cluster-agent报错如下:</p>
<p>解决办法:(如图)
采用 4.3步骤 的命令方法不成功,改用这种方法:
(1)选择user-cluster/system,在Namespace:cattle-system下的应用:cattle-cluster-agent右边菜单中选择:View/Edis YAML 菜单进入
(2)在81行与82行之间(未添加前的行数,可能稍有差别)添加如下四行内容</p>
<pre><code class="language-bash"> hostAliases:
- hostnames:
- rancher.hzsun.com
ip: 172.16.7.200</code></pre>
<ul>
<li>注意格式对齐。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/5ae66a10c3388727d0439dc11b6deb11" alt="" /></li>
</ul>
<p>(3)重新部署应用即可。</p>
<h2>其它:</h2>
<p>Rancher-v2.3.5的HA部署
<a href="https://blog.csdn.net/wc1695040842/article/details/105253706/">https://blog.csdn.net/wc1695040842/article/details/105253706/</a> # 本文按此篇进行安装
五、rancher-ha-Helm安装Rancher # 使用自签证书,看证书名称说明
<a href="https://blog.51cto.com/wangpengtai/2413697">https://blog.51cto.com/wangpengtai/2413697</a>
注意:
证书、私钥、ca名称必须是tls.crt、tls.key、cacerts.pem。</p>
<p><a href="https://blog.csdn.net/wc1695040842">https://blog.csdn.net/wc1695040842</a> 此作者的内容可以好好学习一下,还有ceph
下面的暂时放着:</p>
<pre><code class="language-bash">http://www.bubuko.com/infodetail-3104650.html
这博主的文章不错
https://blog.51cto.com/wangpengtai
五、rancher-ha-Helm安装Rancher #使用自签证书
https://blog.51cto.com/wangpengtai/2413697
Rancher(1),Rancher 2.x 生产环境HA(高可用)部署K8S
https://blog.51cto.com/bilibili/2440304</code></pre>