rancher -部署
文章目录概述准备工具准备材料准备一个mysql数据库安装k3s-server保存kubeconfig文件检查集群 Pod 的运行状况安装rancher安装kubectl和helm添加helm仓库创建namespace安装cert-manager验证 Rancher Server 是否已成功部署后记概述花了一周终于把rancher成功部署起来了,最开始使用的是docker,但是docker不能部署多
文章目录
概述
花了一周终于把rancher成功部署起来了,最开始使用的是docker,但是docker不能部署多节点,所以后面又尝试了k3s和rke,但是坑太多了,最后只有k3s和docker成功了。
docker比较简单就不说了,这里我记录下自己使用k3s方式部署
内容来源:传送门
准备工具
服务器
要求至少2核4g,最好4和8g,才能运行好各种服务。如果没钱可以去阿里云买那种按照时薪计算的,测试完毕就销毁。
准备材料
至少准备1台(高可用就准备3台)linux服务器,推荐ubuntu18,服务器性能建议4核8g以上(第一次部署其实已经成功了,但是1核2g性能太差跑不起来,高可用就准备2台)
准备1个域名,准备好对应的ssl证书
准备一个mysql数据库
apt update
apt install mysql
mysql
#建议:不要把root账户共享出去,密码设置必须有大写英语字母、小写英语字母、特殊符号、数字
mysql> use mysql;
mysql> create user '账户名称'@'%' identified by '密码';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO '账户名称'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
#修改mysql配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
#将里面的bind-address = 127.0.0.1注释掉
#然后 重启
service mysql restart
#别忘了开启阿里云的3306端口
安装docker
卸载旧版本
旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:
$ sudo apt-get remove docker \
docker-engine \
docker.io
使用 APT 安装
由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
然后,我们需要向 source.list 中添加 Docker 软件源
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 以上命令会添加稳定版本的 Docker CE APT 镜像源,如果需要测试或每日构建版本的 Docker CE 请将 stable 改为 test 或者 nightly。
安装 Docker
更新 apt 软件包缓存,并安装 docker-ce:
$ sudo apt-get update
$ sudo apt-get install docker-ce
设置docker开机自动启动
systemctl start docker.service
systemctl enable docker.service
安装k3s-server
安装k3s server(安装过程中可能会提示某些端口无法访问,到阿里云打开)
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
--datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"
#这里有一个坑,@tcp()这个不能省,直接把数据库ip替换hostname就好
检查k3s是否成功
sudo k3s kubectl get nodes
大概会得到这样的结果:
ubuntu@ip-172-31-60-194:~$ sudo k3s kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-172-31-60-194 Ready master 44m v1.17.2+k3s1
ip-172-31-63-88 Ready master 6m8s v1.17.2+k3s1
检查测试集群容器运行状况
sudo k3s kubectl get pods --all-namespaces
在另外一台linux服务器也要这么操作
保存kubeconfig文件
如果只有一个节点不需要转发可跳过
在每个 Rancher Server 节点上安装 K3s 时,会在节点上/etc/rancher/k3s/k3s.yaml位置创建一个kubeconfig文件。该文件包含用于完全访问集群的凭据,您应该将此文件保存在安全的位置。
要使用此kubeconfig文件,
- 安装 Kubernetes 命令行工具kubectl。
- 将文件/etc/rancher/k3s/k3s.yaml复制并保存到本地计算机上的~/.kube/config文件中。
- 在这个 kubeconfig 文件中,server参数为 localhost。您需要手动更改这个地址为负载均衡器的 DNS,并且指定端口 6443。(Kubernetes API Server 的端口为 6443,Rancher Server 的端口为 80 和 443。)以下是一个示例k3s.yaml:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: [CERTIFICATE-DATA]
server: [LOAD-BALANCER-DNS]:6443 # 编辑此行
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
password: [PASSWORD]
username: admin
结果: 您现在可以使用kubectl来管理您的 K3s 集群。如果您有多个 kubeconfig 文件,可以在使用kubectl时通过传递文件路径来指定要使用的 kubeconfig 文件:
kubectl --kubeconfig ~/.kube/config/k3s.yaml get pods --all-namespaces
有关kubeconfig文件的更多信息,请参考 K3s 文档或官方 Kubernetes 文档中关于使用kubeconfig文件访问集群的部分。
检查集群 Pod 的运行状况
既然已经设置了kubeconfig文件,就可以使用kubectl从您的本地计算机访问集群了。
检查所有需要的 Pod 和容器是否状况良好:
ubuntu@ip-172-31-60-194:~$ sudo kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system metrics-server-6d684c7b5-bw59k 1/1 Running 0 8d
kube-system local-path-provisioner-58fb86bdfd-fmkvd 1/1 Running 0 8d
kube-system coredns-d798c9dd-ljjnf 1/1 Running 0 8d
结果: 您已确认可以使用kubectl访问集群,并且 K3s 集群正在正确运行。现在,可以在集群上安装 Rancher Server 了。
安装rancher
安装kubectl和helm
安装kubectl
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client
安装helm
这个比较慢,大概十分钟,如果你能科学上网会比较快
curl https://helm.baltorepo.com/organization/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
添加helm仓库
有三个:latest、stable、alpha
建议stable
把下方CHART_REPO
改为stable
helm repo add rancher-<CHART_REPO> http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/<CHART_REPO>
创建namespace
kubectl create namespace cattle-system
注意,如果一会安装出错了,可以执行kubectl delete namespaces cattle-system
把对应的域删了重来
安装cert-manager
# 安装 CustomResourceDefinition 资源
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.crds.yaml
# **重要:**
# 如果您正在运行 Kubernetes v1.15 或更低版本,
# 则需要在上方的 kubectl apply 命令中添加`--validate=false`标志,
# 否则您将在 cert-manager 的 CustomResourceDefinition 资源中收到与
# x-kubernetes-preserve-unknown-fields 字段有关的验证错误。
# 这是一个良性错误,是由于 kubectl 执行资源验证的方式造成的。
# 为 cert-manager 创建命名空间
kubectl create namespace cert-manager
# 添加 Jetstack Helm 仓库
helm repo add jetstack https://charts.jetstack.io
# 更新本地 Helm chart 仓库缓存
helm repo update
# 安装 cert-manager Helm chart
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v0.15.0
建议使用let’s encrypt的证书,简单好用
helm install rancher rancher-<CHART_REPO>/rancher \#记得修改chart_repo
--namespace cattle-system \
--set hostname=rancher.my.org \ #你之前注册的域名
--set ingress.tls.source=letsEncrypt \
--set letsEncrypt.email=me@example.org # 你的邮箱
执行之后等待rancher安装和运行:
kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out
验证 Rancher Server 是否已成功部署
检查 Rancher Server 是否运行成功:
这个一定要执行
kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out
如果看到以下错误: error: deployment “rancher” exceeded its progress deadline, 您可以通过运行以下命令来检查 deployment 的状态(相信我,他的报错你根本不知道怎么解决,如果出现错误,肯定是上面某一步没执行好,重来吧):
kubectl -n cattle-system get deploy rancher
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
rancher 3 3 3 3 3m
DESIRED和AVAILABLE应该显示相同的个数。
安装完毕之后等待一段时间(五分钟)即可访问。
后记
记得自己配置nginx转发流量
更多推荐
所有评论(0)