通过二进制方式安装
分步安装二进制高可用 karmada 集群。
前提条件
服务器
需要 3 个服务器,例如:
+---------------+-----------------+-----------------+
| HostName | Host IP | Public IP |
+---------------+-----------------+-----------------+
| karmada-01 | 172.31.209.245 | 47.242.88.82 |
+---------------+-----------------+-----------------+
| karmada-02 | 172.31.209.246 | |
+---------------+-----------------+-----------------+
| karmada-03 | 172.31.209.247 | |
+---------------+-----------------+-----------------+
公共 IP 不是必需的。这个 IP 用于从公网下载某些
karmada依赖组件,并通过公网连接到karmadaApiServer。
DNS 解析
对 karmada-01、karmada-02、karmada-03 执行操作。
$ vi /etc/hosts
172.31.209.245 karmada-01
172.31.209.246 karmada-02
172.31.209.247 karmada-03
你也可以使用 "Linux 虚拟服务器"进行负载均衡,不更改 /etc/hosts 文件。
环境
karmada-01 需要以下环境。
Golang:编译 karmada 二进制文件 GCC:编译 nginx(使用云负载均衡时忽略此项)
编译并下载二进制文件
对 karmada-01 执行操作。
Kubernetes 二进制文件
下载 kubernetes 二进制文件包。
参阅本页下载不同版本和不同架构的二进制文件:https://kubernetes.io/releases/download/#binaries
wget https://dl.k8s.io/v1.23.3/kubernetes-server-linux-amd64.tar.gz
tar -zxvf kubernetes-server-linux-amd64.tar.gz --no-same-owner
cd kubernetes/server/bin
mv kube-apiserver kube-controller-manager kubectl /usr/local/sbin/
etcd 二进制文件
下载 etcd 二进制文件包。
若要使用较新版本的 etcd,请参阅:https://etcd.io/docs/latest/install/
wget https://github.com/etcd-io/etcd/releases/download/v3.5.1/etcd-v3.5.1-linux-amd64.tar.gz
tar -zxvf etcd-v3.5.1-linux-amd64.tar.gz --no-same-owner
cd etcd-v3.5.1-linux-amd64/
mv etcdctl etcd /usr/local/sbin/
Karmada 二进制文件
从源代码编译 karmada 二进制文件。
git clone https://github.com/karmada-io/karmada
cd karmada
make karmada-aggregated-apiserver karmada-controller-manager karmada-scheduler karmada-webhook karmadactl kubectl-karmada
mv _output/bin/linux/amd64/* /usr/local/sbin/
Nginx 二进制文件
从源代码编译 nginx 二进制文件。
wget http://nginx.org/download/nginx-1.21.6.tar.gz
tar -zxvf nginx-1.21.6.tar.gz
cd nginx-1.21.6
./configure --with-stream --without-http --prefix=/usr/local/karmada-nginx --without-http_uwsgi_module --without-http_scgi_module --without-http_fastcgi_module
make && make install
mv /usr/local/karmada-nginx/sbin/nginx /usr/local/karmada-nginx/sbin/karmada-nginx
分发二进制文件
上传二进制文件到 karmada-02、karmada-03 服务器。
生成证书
步骤 1:创建 Bash 脚本和配置文件
此脚本将使用 openssl 命令生成证书。
下载此目录。
我们分开了 CA 和叶证书生成脚本,若你需要更改叶证书的主体备用名称(又名负载均衡器 IP),你可以重用 CA 证书,并运行 generate_leaf.sh 以仅生成叶证书。
有 3 个 CA:front-proxy-ca、server-ca、etcd/ca。 为什么我们需要 3 个 CA,请参见 PKI 证书和要求、CA 重用和冲突。
如果你使用他人提供的 etcd,可以忽略 generate_etcd.sh 和 csr_config/etcd。
步骤 2:更改 <SERVER_IP>
你需要将 csr_config/**/*.conf 文件中的 <SERVER_IP> 更改为"负载均衡器 IP" 和"服务器 IP"。
如果你仅使用负载均衡器访问服务器,你只需要填写"负载均衡器 IP"。
你正常不需要更改 *.sh 文件。
步骤 3:运行 Shell 脚本
./generate_ca.sh
./generate_leaf.sh ca_cert/
./generate_etcd.sh
步骤 4:检查证书
你可以查看证书的配置,以 karmada.crt 为例。
openssl x509 -noout -text -in karmada.crt
步骤 5:创建 Karmada 配置目录
复制证书到 /etc/karmada/pki 目录。
mkdir -p /etc/karmada/pki
cd ca_cert
cp -r * /etc/karmada/pki
cd ../cert
cp -r * /etc/karmada/pki
创建 Karmada kubeconfig 文件和 etcd 加密密钥
对 karmada-01 执行操作。
创建 kubeconfig 文件
步骤 1:下载 bash 脚本
下载此文件。
步骤 2:执行 bash 脚本
172.31.209.245:5443 是针对 karmada-apiserver 的 nginx 代理的地址,我们将在后续设置。
你应将其替换为负载均衡器提供的 "host:port"。
./create_kubeconfig_file.sh "https://172.31.209.245:5443"