(四)Istio安装验证

一、快速部署Kubernetes集群

# 安装kubeadm、kubectl、kubelet
sudo yum install -y --nogpgcheck kubelet-1.22.3 kubectl-1.22.3 kubeadm-1.22.3
yum list installed | grep kube

# 拉取镜像
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=1.22.3
docker images | grep registry.aliyuncs.com

# 引导集群
kubeadm init --kubernetes-version=1.22.3 \
--apiserver-advertise-address=192.168.80.22 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.122.0.0/16

kubectl get node
kubectl get pod -A

# 集群中加入node节点
kubeadm join 192.168.3.100:8443 --token rv4daf.44jisgiwzg7wp07c \
--discovery-token-ca-cert-hash sha256:c947ffc92b679603c51279d843e6a0657d48b7c60644e539dba15dc1246e6f59

二、安装Istio软件包

1、下载Istio软件包

下载地址:https://github.com/istio/istio/releases/tag/1.12.4
image

2、解压

tar -zxvf istio-1.12.4-linux-amd64.tar.gz
mv istio-1.1.2.4 /usr/local/istio-1.12.4
cd /usr/local
ln -s istio-1.12.4/ istio

3、加入环境变量

cd /usr/local/istio
# 临时添加环境便里昂
export PATH=$PWD/bin:$PATH
# 永久添加环境便变量,编辑/etc/profile,最后添加export,保存后source /etc/profile
vim /etc/profile
export PATH=/usr/local/istio/bin:$PATH
source /etc/profile

4、准备Istio镜像

image

5、查看安装配置profile

地址:https://istio.io/latest/zh/docs/setup/additional-setup/config-profiles/
image
image

6、运行安装命令

$ istioctl install --set profile=demo -y
# 执行结果如下
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete

7、对default命名空间开启istio注入

$ kubectl label namespace default istio-injection=enabled
namespace/default labeled

三、部署实例应用验证

1、部署 Bookinfo 示例应用:

$ cd /usr/local/istio
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created

2、应用很快会启动起来。当每个 Pod 准备就绪时,Istio 边车代理将伴随它们一起部署。

$ kubectl get services
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
details       ClusterIP   10.0.0.212      <none>        9080/TCP   29s
kubernetes    ClusterIP   10.0.0.1        <none>        443/TCP    25m
productpage   ClusterIP   10.0.0.57       <none>        9080/TCP   28s
ratings       ClusterIP   10.0.0.33       <none>        9080/TCP   29s
reviews       ClusterIP   10.0.0.28       <none>        9080/TCP   29s

$ kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
details-v1-558b8b4b76-2llld       2/2     Running   0          2m41s
productpage-v1-6987489c74-lpkgl   2/2     Running   0          2m40s
ratings-v1-7dc98c7588-vzftc       2/2     Running   0          2m41s
reviews-v1-7f99cc4496-gdxfn       2/2     Running   0          2m41s
reviews-v2-7d79d5bd5d-8zzqd       2/2     Running   0          2m41s
reviews-v3-7dbcdcbc56-m8dph       2/2     Running   0          2m41s

3、验证方方面面均工作无误。运行下面命令,通过检查返回的页面标题,来验证应用是否已在集群中运行,并已提供网页服务:

# 翻译一下:进入ratings容器执行curl http://productpage:9080/productpage查看结果
$ kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -s productpage:9080/productpage | grep -o "<title>.*</title>"
<title>Simple Bookstore App</title>

四、对外开放应用程序

此时,BookInfo 应用已经部署,但还不能被外界访问。 要开放访问,你需要创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由。
把应用关联到 Istio 网关:

$ cd /usr/local/istio
$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
# 实际执行结果
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created

确保配置文件没有问题:

$ istioctl analyze
✔ No validation issues found when analyzing namespace: default.

查看VirtualService
image
查看istio的gateway
image

五、验证外部访问

用浏览器查看 Bookinfo 应用的产品页面,验证 Bookinfo 已经实现了外部访问。
运行下面命令,获取 Bookinfo 应用的外部访问地址。

$ echo "http://$GATEWAY_URL/productpage"

把上面命令的输出地址复制粘贴到浏览器并访问,确认 Bookinfo 应用的产品页面是否可以打开。

六、部署仪表盘

Istio 和几个遥测应用做了集成。 遥测能帮你了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。

使用下面说明部署 Kiali 仪表板、 以及 Prometheus、 Grafana、 还有 Jaeger
安装 Kiali 和其他插件,等待部署完成。

$ kubectl apply -f samples/addons
$ kubectl rollout status deployment/kiali -n istio-system
Waiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available...
deployment "kiali" successfully rolled out

如果在安装插件时出错,再运行一次命令。 有一些和时间相关的问题,再运行就能解决。
访问 Kiali 仪表板。

$ istioctl dashboard kiali

在左侧的导航菜单,选择 Graph ,然后在 Namespace 下拉列表中,选择 default 。

Kiali 仪表板展示了网格的概览、以及 Bookinfo 示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。
image

image

posted @ 2022-05-24 23:17  比特边界  阅读(181)  评论(0编辑  收藏  举报