发布时间: 2024-1-31 文章作者: myluzh 分类名称: Kubernetes 朗读文章
[root@k8s-master01 istio]# wget https://github.com/istio/istio/releases/download/1.20.2/istio-1.20.2-linux-amd64.tar.gz [root@k8s-master01 istio]# tar -zxvf istio-1.20.2-linux-amd64.tar.gz [root@k8s-master01 istio]# cd istio-1.20.2/bin/ # 对于本次安装,我们采用 demo 配置组合。https://istio.io/latest/zh/docs/setup/additional-setup/config-profiles/ [root@k8s-master01 bin]# ./istioctl install --set profile=demo -y # 安装完成 [root@k8s-master01 bin]# kubectl get pod -A | grep istio istio-system istio-egressgateway-684596759b-hhcgg 1/1 Running 0 4m28s istio-system istio-ingressgateway-56c8df6d5d-tcdzd 1/1 Running 0 4m28s istio-system istiod-cd9fcbdf7-nvbjb 1/1 Running 0 4m44s # !生产环境推荐使用profile=default安装, 并用 "--set hub=xxx" 设置私有镜像仓 [root@k8s-master01 bin]# ./istioctl install --set profile=default --set hub=172.30.82.223:5443/istio给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理
[root@k8s-master01 bin]# kubectl label namespace default istio-injection=enabled namespace/default labeled
# 部署 Bookinfo 示例应用 [root@k8s-master01 istio-1.20.2]# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created ... # 等待资源完成 通过检查返回的页面标题来验证应用是否已在集群中运行,并已提供网页服务: [root@k8s-master01 istio-1.20.2]# kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>" # 修改为nodeport类型 [root@k8s-master01 istio-1.20.2]# kubectl edit svc productpage # 查看nodeport端口 这边为31166 访问http://nodeip:31166/productpage 查看页面 [root@k8s-master01 istio-1.20.2]# kubectl get svc | grep productpage productpage NodePort 10.43.26.232 9080:31166/TCP 93m
[root@k8s-master01 istio-1.20.2]# kubectl apply -f samples/addons # 等待完成 [root@k8s-master01 istio-1.20.2]# kubectl rollout status deployment/kiali -n istio-system deployment "kiali" successfully rolled out # 修改kiali为nodeport [root@k8s-master01 istio-1.20.2]# kubectl edit svc kiali -n istio-system #查看nodeport端口 这边为 http://nodeip:32027/ [root@k8s-master01 istio-1.20.2]# kubectl get svc -n istio-system | grep kiali kiali NodePort 10.43.152.154 <none> 20001:32027/TCP,9090:32099/TCP2、把kaili通过ingress暴露出来
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kiali-ingress namespace: istio-system annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: ingressClassName: nginx rules: - host: kiali.hello.com http: paths: - path: / pathType: Prefix backend: service: name: kiali port: number: 200013、kaili开启token登录
# 修改kiali的configmap文件,把strategy改为token kubectl edit configmap kiali -n istio-system spec: auth: strategy: token # 修改配置后,需要重启 Kiali 以使更改生效 kubectl rollout restart deployment kiali -n istio-system4、获取token,登录kaili
# 创建创建一个用于 Kiali 的 ServiceAccount kubectl create serviceaccount kiali-user -n istio-system # 确保 ServiceAccount 具有访问 Kiali 所需的权限。例如,绑定 kiali-viewer 角色 kubectl create rolebinding kiali-user-viewer --clusterrole=kiali-viewer --serviceaccount=istio-system:kiali-user -n istio-system # 获取token # Kubernetes 会自动为每个 ServiceAccount 创建一个 Secret,其中包含 Token。可以通过以下步骤获取 Token: kubectl get secret $(kubectl get serviceaccount kiali-user -n istio-system -o jsonpath='{.secrets[0].name}') -n istio-system -o jsonpath='{.data.token}' | base64 --decode # 如果 Kubernetes 版本较新(1.24+),可能不会自动创建 Secret。可以手动创建一个 Token: kubectl create token kiali-user -n istio-system #####上面的权限不够 需要自己加权限,也可以直接用下面的 集群管理员的token ### kubectl create serviceaccount cluster-admin-sa -n default kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --serviceaccount=default:cluster-admin-sa kubectl get secret $(kubectl get serviceaccount cluster-admin-sa -n default -o jsonpath='{.secrets[0].name}') -n default -o jsonpath='{.data.token}' | base64 --decode
# 完全卸载istio istioctl x uninstall --purge -n istio-system kubectl delete namespace istio-system
标签: istio service mesh istioctl
发表评论