业务集群的安装 #
业务集群受管理集群的控制,执行管理集群下发的任务。
前置条件 #
安装solar-operator #
solar-operator 是SolarMesh 的安装组件,它执行安装和状态的协调。
⚠️ 若集群内存在
内部负载均衡(Internal Load Balancer)
,直接初始化solar-operator即可solarctl operator init
若集群内没有内部负载均衡(Internal Load Balancer)
,使用以下命令获取ISTIOD_REMOTE_EP
export ISTIOD_REMOTE_EP=$(kubectl get nodes|awk '{print $1}' |awk 'NR==2'|xargs -n 1 kubectl get nodes -o jsonpath='{.status.addresses[0].address}')
通过ISTIOD_REMOTE_EP
初始化solar-operator
solarctl operator init --external-ip $ISTIOD_REMOTE_EP --eastwest-external-ip $ISTIOD_REMOTE_EP
安装业务端组件 #
创建namespace
kubectl create ns service-mesh
设置集群名称以及当前集群istio版本。
kubectl apply -f - <<EOF
apiVersion: install.solar.io/v1alpha1
kind: SolarOperator
metadata:
name: cluster01 # 集群名称
namespace: solar-operator
spec:
istioVersion: "1.13" ## 对应您Istio的安装版本
profile: default
EOF
检查组件状态:
$ kubectl get po -A -w
NAMESPACE NAME READY STATUS RESTARTS AGE
service-mesh networking-agent-d79988595-58tbs 3/3 Running 0 52s
service-mesh networking-agent-d79988595-nzfg5 3/3 Running 0 2m46s
solar-operator solar-operator-78d69dc876-sl7rl 1/1 Running 0 7m20
以上安装过程是默认安装,如果特殊场景安装需要,您可以查看自定义安装 ,或许能帮助到您。
配置SolarMesh #
Ok,现在我们的solarmesh已经安装好了,现在只要做一些小的配置,就可以玩转它了。
修改 istio-ingressgateway service的端口,增加以下配置,以支撑 solarmesh 正常运行:
$ kubectl edit svc istio-ingressgateway -n istio-system
- name: promethues
port: 9090
protocol: TCP
targetPort: 9090
- name: kiali
port: 20001
protocol: TCP
targetPort: 20001
- name: networking-agent
port: 7575
protocol: TCP
targetPort: 7575
- name: grafana
port: 3000
protocol: TCP
targetPort: 3000
- name: jaeger
port: 16686
protocol: TCP
targetPort: 16686
修改 istio-ingressgateway deployment的端口,增加一下配置(注意,加入的位置是在 name: istio-proxy
的下面):
$ kubectl edit deployment istio-ingressgateway -n istio-system
- containerPort: 9090
protocol: TCP
- containerPort: 20001
protocol: TCP
- containerPort: 7575
protocol: TCP
- containerPort: 9080
protocol: TCP
- containerPort: 3000
protocol: TCP
- containerPort: 16686
protocol: TCP
安装附件 #
- 安装kiali、promethues、es
SolarMesh 默认的访问 istio-system namespace 中的 kiali、prometheus 作为它拓扑图、监控指标的数据来源,所以您需要在业务集群中安装这些组件。
在接口流量中,数据将存储在es中,所以我们也需要安装es。
这些组件,我们在 SolarMesh 的安装包中,提供了简易安装,您可以用来测试。
$ pwd
/root/solar/manifests/addon
$ ls
es kiali kube-shortcut prometheus
安装后,我们检查下组件的状态:
$ kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
es elasticsearch-546d5c6cf4-kjljx 1/1 Running 0 6m48s
istio-system kiali-78466f49d-mzrr2 1/1 Running 0 6m41s
istio-system prometheus-57b5d547bd-dplgc 2/2 Running 0 6m35s
- 安装kube-shortcut
kube-shortcut
是SolarMesh的功能扩展组件,它使用helm安装, charts 包在安装包中,执行安装命令如下:
$ kubectl create ns kube-shortcut-system
# 区别在 addon 目录下执行
$ helm install kube-shortcut kube-shortcut -n kube-shortcut-system
# 功能初始化
$ kubectl apply -f kube-shortcut/files/solarmesh.yaml
安装后,我们检查下组件的状态:
$ kubectl get po -n kube-shortcut-system
NAME READY STATUS RESTARTS AGE
kube-shortcut-controller-manager-67d5d59f6-hq7nd 2/2 Running 0 2m39s
- 安装grafana、jaeger
SolarMesh 使用grafana做告警以及监控面板,使用jaeger做链路追踪。 安装命令如下:
# cluster01 对应 安装istio时设置的集群名称
$ solarctl install grafana --name cluster01
$ solarctl install jaeger --name cluster01
检查组件状态:
$ kubectl get po -n service-mesh
NAME READY STATUS RESTARTS AGE
grafana-5d5ff44cd6-8wdj9 1/1 Running 0 1m
jaeger-5447b6ddcc-z4ng7 1/1 Running 0 1m
现在,业务集群的安装步骤已经全部完成了,我们下一步是进行业务集群的注册,使管理集群能发现集群。
卸载SolarMesh #
如果需要卸载SolarMesh,请参考solarctl uninstall
命令
➜ ~ solarctl uninstall -h
The remove subcommand installs, removes and shows the status of the operator controller.
Usage:
solarctl uninstall [command]
Available Commands:
cluster Commands related to solarmesh manifests
istio Uninstall Istio from a cluster
solarmesh The manifest command generates and diffs solarmesh manifests.
Flags:
-h, --help help for uninstall
Use "solarctl uninstall [command] --help" for more information about a command.
卸载SolarMesh的业务服务 #
solarctl uninstall cluster