RKE安装K8s HA集群过程记录

准备工作

ansible主机清单:

[rke]
rke ansible_host=192.168.100.228

[k8s]
master01 ansible_host=192.168.101.72
master02 ansible_host=192.168.101.75
master03 ansible_host=192.168.100.229

安装docker:

ansible-playbook roles/docker.yml

使用ansible之前,需要分发密钥至各节点root用户。

创建rancher用户,并分发密钥:

ansible-playbook roles/key.yml

安装rke、kubectl、helm工具:

# https://www.cnrancher.com/download/rke/rke_linux-amd64
wget https://www.cnrancher.com/download/rke/rke_linux-amd64
chmod +x rke_linux-amd64
mv rke_linux-amd64 /usr/bin/rke

# https://www.cnrancher.com/download/kubectl/kubectl_amd64-linux
wget https://www.cnrancher.com/download/kubectl/kubectl_amd64-linux
chmod +x kubectl_amd64-linux
mv kubectl_amd64-linux /usr/bin/kubectl

# https://www.cnrancher.com/download/helm/helm-linux.tar.gz
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.0-linux-amd64.tar.gz
tar -xf helm-v2.12.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/helm
mv linux-amd64/tiller /usr/bin/tiller
rm -rf linux-amd64

创建集群

rancher-cluster.yml:

nodes:
  - address: 192.168.101.72
    user: rancher
    role: [controlplane,worker,etcd]
  - address: 192.168.101.75
    user: rancher
    role: [controlplane,worker,etcd]
  - address: 192.168.100.229
    user: rancher
    role: [controlplane,etcd]

services:
  etcd:
    snapshot: true
    creation: 6h
    retention: 24h

rke up:

rke up --config rancher-cluster.yml

rke up后会生成kube_config_rancher-cluster.yml

设置kube_config环境变量(或者复制到~/.kube/config ):

echo "export KUBECONFIG=/home/rancher/kube_config_rancher-cluster.yml" >> /etc/profile
source /etc/profile

安装tiller

# Helm在集群上安装tiller服务以管理charts. 由于RKE默认启用RBAC, 因此我们需要使用kubectl来创建一个serviceaccount,clusterrolebinding才能让tiller具有部署到集群的权限

kubectl -n kube-system create serviceaccount tiller

# 创建ClusterRoleBinding以授予tiller帐户对集群的访问权限
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

# 安装Helm Server(Tiller)
helm init --service-account tiller --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

安装cert-manager

helm install stable/cert-manager \
  --name cert-manager \
  --namespace kube-system

安装rancher web

# 使用helm repo add命令添加Rancher chart仓库地址
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable

helm install rancher-stable/rancher \
  --name rancher \
  --namespace cattle-system \
  --set hostname=xxx.com

helm install rancher-stable/rancher --name rancher --namespace cattle-system --set hostname=xxx.com

如果不是通过DNS解析域名,而是通过本地hosts解析,可以通过给cattle-cluster-agent Pod和cattle-node-agent添加主机别名,让其可以正常通信,前提是IP地址可以互通。

kubectl -n cattle-system patch deployments cattle-cluster-agent --patch '{
    "spec": {
        "template": {
            "spec": {
                "hostAliases": [
                    {
                        "hostnames":
                        [
                            "xxx.com"
                        ],
                            "ip": "192.168.100.228"
                    }
                ]
            }
        }
    }
}'

# 上面这条命令可能报错:Error from server (NotFound): deployments.extensions "cattle-cluster-agent" not found,因为cattle-cluster-agent还没有创建成功

kubectl -n cattle-system patch daemonsets cattle-node-agent --patch '{
    "spec": {
        "template": {
            "spec": {
                "hostAliases": [
                    {
                        "hostnames":
                        [
                            "xxx.com"
                        ],
                            "ip": "192.168.100.228"
                    }
                ]
            }
        }
    }
}'

安装rancher cli

wget https://www.cnrancher.com/download/cli/rancher-linux-amd64.tar.gz
mkdir rancher-linux-amd64.tmp.d # 临时目录
tar -xf rancher-linux-amd64.tar.gz -C rancher-linux-amd64.tmp.d
find rancher-linux-amd64.tmp.d -name 'rancher' -type f | xargs -I {} mv {} /usr/bin/;
rm -rf rancher-linux-amd64.tmp.d
Copyright © Zeng 2019-2021 all right reserved,powered by GitbookModified @ 2021-09-06 12:33:02

results matching ""

    No results matching ""