# 工作目錄/mnt/e/work/
# 下載安裝包
cd /mnt/e/work/
curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.3.0 sh -
配置環(huán)境變量刪除舊的
/etc/profile
export PATH="$PATH:/mnt/e/work/istio-1.3.0/bin"
source /etc/profile
# 修改yaml 與上次版本參數(shù)一致
#使用Beyond Compare 4 差異對(duì)比
#修改gateways values.yaml 文件 刪除nodePort 當(dāng)然也可不用刪除
#參數(shù)gateways.istio-ingressgateway.type=NodePort
# 參數(shù)gateways.istio-ingressgateway.type=ClusterIP 必須刪除nodePort
創(chuàng)新互聯(lián)專(zhuān)注于新北網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供新北營(yíng)銷(xiāo)型網(wǎng)站建設(shè),新北網(wǎng)站制作、新北網(wǎng)頁(yè)設(shè)計(jì)、新北網(wǎng)站官網(wǎng)定制、微信小程序定制開(kāi)發(fā)服務(wù),打造新北網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供新北網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。# 修改 gateways\templates\service.yaml 文件
#添加 clusterIP: None # 方便暴露其它tcp 端口
#修改 istio-cni
# 修改文件helm\istio-cni\templates\istio-cni.yaml
#添加內(nèi)容 也可以不用修改在這邊項(xiàng)目做了修改的
- effect: NoSchedule
key: node-role.kubernetes.io/ingress
operator: Equal
#檢查是否安裝 istio-cni 插件
helm status istio-cni --namespace istio-system
root@Qist:/mnt/f# helm status istio-cni --namespace istio-system
NAME: istio-cni
LAST DEPLOYED: 2019-09-18 16:33:57.4490493 +0800 DST
NAMESPACE: istio-system
STATUS: deployed
#返回正常證明已經(jīng)安裝了istio-cni
#由于istio-cni 安裝在非kube-system命名空間 先卸載istio-cni
helm uninstall istio-cni --namespace istio-system
# 等待卸載完成
helm install install/kubernetes/helm/istio-cni --name-template istio-cni --namespace istio-system \
--set cniBinDir=/apps/cni/bin \ # cni 在宿主機(jī)目錄
--set excludeNamespaces={"istio-system,monitoring,kubernetes-dashboard,kube-system"}# 排除的命名空間
# 如果部署在kube-system 命名空間直接升級(jí)
helm upgrade --install istio-cni install/kubernetes/helm/istio-cni --namespace kube-system \
--set cniBinDir=/apps/cni/bin \
--set excludeNamespaces={"istio-system,monitoring,kubernetes-dashboard,kube-system"}
# 升級(jí)istio-init
helm upgrade --install istio-init install/kubernetes/helm/istio-init --namespace istio-system --force
# 等待升級(jí)完成
# 使用以下命令驗(yàn)證是否已將所有Istio CRD提交到Kubernetes api-server
kubectl get crds | grep 'istio.io' | wc -l
root@Qist:/mnt/f# kubectl get crds | grep 'istio.io' | wc -l
23
# 返回正常
# 升級(jí)istio圖表
# xxxx 替換成自己的域名
#xxxx.local 替換成自己k8s集群域
helm upgrade --install istio install/kubernetes/helm/istio --namespace istio-system \
--set gateways.istio-ingressgateway.type=ClusterIP \ # ClusterIP IP 對(duì)外暴露服務(wù) 可設(shè)置NodePort
--set gateways.istio-egressgateway.enabled=true \ # 開(kāi)啟istio-egressgateway 服務(wù)
--set gateways.istio-ingressgateway.serviceAnnotations={'kubernetes.io/ingress.class: traefik,traefik.ingress.kubernetes.io/affinity: true,traefik.ingress.kubernetes.io/load-balancer-method: drr'} \ # 設(shè)置 istio-ingressgateway service 負(fù)載均衡規(guī)則及session 保持與使用traefik 對(duì)外提供ingress 服務(wù) 如果是其它ingress 一定要做修改
--set mixer.policy.enabled=true \ # 啟用策略檢查
--set grafana.enabled=true \ # 開(kāi)啟grafana
--set grafana.ingress.enabled=true \ # 開(kāi)啟grafana ingress
--set grafana.ingress.hosts={"gr.xxxx.com"} \ # 配置grafana 訪問(wèn)域名
--set grafana.ingress.annotations={"kubernetes.io/ingress.class: traefik"} \ # 配置grafana 使用traefik 作為轉(zhuǎn)發(fā)服務(wù)
--set grafana.contextPath=/ \ # 配置域名訪問(wèn)路徑 默認(rèn)路徑/grafana
--set prometheus.ingress.enabled=true \ # 開(kāi)啟prometheus ingress
--set prometheus.ingress.hosts={"pr.xxxx.com"} \ # 配置 prometheus 訪問(wèn)域名
--set prometheus.ingress.annotations={"kubernetes.io/ingress.class: traefik"} \ #用traefik 作為轉(zhuǎn)發(fā)服務(wù)
--set prometheus.contextPath=/ \ #配置域名訪問(wèn)路徑 默認(rèn)路徑/prometheus
--set tracing.enabled=true \ # 開(kāi)啟tracing 服務(wù)如果以前配置zipkin 作為追蹤這里請(qǐng)?zhí)砑?tracing.provider=zipkin 否則部署會(huì)報(bào)錯(cuò)
--set tracing.ingress.enabled=true \ # 開(kāi)啟tracing ingress
--set tracing.ingress.hosts={"tracing.xxxx.com"} \ # 配置tracing 域名訪問(wèn)
--set tracing.ingress.annotations={"kubernetes.io/ingress.class: traefik"} \ # 用traefik 作為轉(zhuǎn)發(fā)服務(wù)
--set tracing.contextPath=/ \ # 配置域名訪問(wèn)路徑 默認(rèn)路徑/tracing
--set kiali.enabled=true \ # 開(kāi)啟kiali
--set kiali.ingress.enabled=true \ # 開(kāi)啟kiali ingress
--set kiali.ingress.hosts={"kiali.xxxx.com"} \ # 配置kiali 域名訪問(wèn)服務(wù)
--set kiali.ingress.annotations={"kubernetes.io/ingress.class: traefik"} \ # 用traefik 作為轉(zhuǎn)發(fā)服務(wù)
--set kiali.contextPath=/ \ # 配置域名訪問(wèn)路徑 默認(rèn)路徑/kiali
--set kiali.dashboard.viewOnlyMode=true \ # 配置賬號(hào)只有讀取權(quán)限
--set kiali.dashboard.grafanaURL=http://gr.xxxx.com \ # 配置grafana 對(duì)外訪問(wèn)路徑可以是對(duì)外的IP 跟域名一定要外網(wǎng)訪問(wèn)
--set kiali.dashboard.jaegerURL=http://tracing.xxxx.com \ # 配置jaeger 對(duì)外訪問(wèn)路徑可以是對(duì)外的IP 跟域名 如果啟用zipkin 這個(gè)配置失效
--set kiali.createDemoSecret=true \ # 設(shè)置kiali Secret 賬號(hào)密碼 默認(rèn)admin/admin
--set istio_cni.enabled=true \ # 開(kāi)啟 istio_cni
--set istio-cni.cniBinDir=/apps/cni/bin \ # 配置 宿主機(jī)cni 路徑
--set istio-cni.excludeNamespaces={"istio-system,monitoring,kubernetes-dashboard,kube-system"} \ # 排除命名空間
--set global.k8sIngress.enabled=true \ # 開(kāi)啟用于K8S入口資源的網(wǎng)關(guān)
--set global.proxy.clusterDomain="xxxx.local" \ # k8s 集群域istio-proxy 會(huì)用到
--set global.proxy.accessLogFile="/dev/stdout" \ # 代理日志輸出到/dev/stdout
--set global.proxy.logLevel="info" \ # 代理日志輸出級(jí)別
--set global.disablePolicyChecks=false \ #開(kāi)啟策略檢查
--set global.proxy.autoInject=disabled # 關(guān)閉istio-injection 為enabled 自動(dòng)注入 設(shè)置為使用annotations 注釋進(jìn)行注入 sidecar.istio.io/inject: "true" 默認(rèn) sidecar.istio.io/inject: "false"
# 等待升級(jí)完成
kubectl get pod -n istio-system
root@Qist:/mnt/f# kubectl get pod -n istio-system
NAME READY STATUS RESTARTS AGE
grafana-7bfb599d6c-5828h 1/1 Running 0 17h
istio-citadel-5f85674d5b-x2hbt 1/1 Running 0 17h
istio-cleanup-secrets-1.3.0-rxsqz 0/1 Completed 0 18h
istio-cni-node-4774c 1/1 Running 0 17h
istio-cni-node-4t7rz 1/1 Running 0 17h
istio-cni-node-h66gq 1/1 Running 0 17h
istio-cni-node-nc64k 1/1 Running 0 17h
istio-cni-node-rd2pw 1/1 Running 0 17h
istio-cni-node-tzjjn 1/1 Running 0 17h
istio-cni-node-xgrj7 1/1 Running 0 17h
istio-egressgateway-55978569d6-cw99p 1/1 Running 0 17h
istio-galley-545fbd68c8-56pmq 1/1 Running 0 17h
istio-ingressgateway-898dd6645-g6jsc 1/1 Running 0 17h
istio-init-crd-10-1.3.0-shl5z 0/1 Completed 0 17h
istio-init-crd-11-1.3.0-rmqjl 0/1 Completed 0 17h
istio-init-crd-12-1.3.0-nckdw 0/1 Completed 0 17h
istio-pilot-7cf68bfd87-fdwx5 2/2 Running 0 17h
istio-policy-7cf59b54db-pq27s 2/2 Running 0 17h
istio-sidecar-injector-5796d5b447-qgnx4 1/1 Running 0 17h
istio-telemetry-8cbc98d59-v5pl4 2/2 Running 0 17h
istio-tracing-d4f8cdf58-2jbdg 1/1 Running 0 16h
kiali-c5965f96c-pdhg9 1/1 Running 0 15h
prometheus-5b68448dc9-pl9qf 1/1 Running 0 17h
# 所有pod 狀態(tài)正常
#邊車(chē)升級(jí)
#在控制平面升級(jí)之后,已經(jīng)運(yùn)行Istio的應(yīng)用程序仍將使用較舊的邊車(chē)。要升級(jí)邊車(chē),您需要重新注入它。
#如果您正在使用自動(dòng)邊車(chē)注入,您可以通過(guò)對(duì)所有吊艙進(jìn)行滾動(dòng)更新來(lái)升級(jí)邊車(chē),以便自動(dòng)重新注入新版本的邊車(chē)。
kubectl rollout restart deployment nginx --namespace default
kubectl get pod -n default | grep nginx
root@Qist:/mnt/f# kubectl get pod -n default | grep nginx
nginx-v1-54dffc665c-gv29t 3/3 Running 0 15h
nginx-v1-54dffc665c-kxp89 3/3 Running 0 15h
nginx-v2-688f8f54d7-fw54c 3/3 Running 0 15h
nginx-v2-688f8f54d7-jbch3 3/3 Running 0 15h
# 查看 pod nginx-v2-688f8f54d7-jbch3 邊車(chē)是否最新
kubectl describe pod pod nginx-v2-688f8f54d7-jbch3| grep proxyv2
root@Qist:/mnt/f# kubectl describe pod pod nginx-v2-688f8f54d7-jbch3| grep proxyv2
Error from server (NotFound): pods "pod" not found
Image: docker.io/istio/proxyv2:1.3.0
Image ID: docker-pullable://istio/proxyv2@sha256:f3f68f9984dc2deb748426788ace84b777589a40025085956eb880c9c3c1c056
# 已經(jīng)是最新版本1.3.0 至此 istio 升級(jí)安裝完成
# 需要修改的配置參考 升級(jí)
# istio-init 安裝
helm install install/kubernetes/helm/istio-init --name-template istio-init --namespace istio-system
kubectl get crds | grep 'istio.io' | wc -l
# istio 安裝
helm install install/kubernetes/helm/istio --name-template istio --namespace istio-system \
--set gateways.istio-ingressgateway.type=ClusterIP \
--set gateways.istio-egressgateway.enabled=true \
--set gateways.istio-ingressgateway.serviceAnnotations={'kubernetes.io/ingress.class: traefik,traefik.ingress.kubernetes.io/affinity: true,traefik.ingress.kubernetes.io/load-balancer-method: drr'} \
--set mixer.policy.enabled=true \
--set grafana.enabled=true \
--set grafana.ingress.enabled=true \
--set grafana.ingress.hosts={"gr.xxxx.com"} \
--set grafana.ingress.annotations={"kubernetes.io/ingress.class: traefik"} \
--set grafana.contextPath=/ \
--set prometheus.ingress.enabled=true \
--set prometheus.ingress.hosts={"pr.xxxx.com"} \
--set prometheus.ingress.annotations={"kubernetes.io/ingress.class: traefik"} \
--set prometheus.contextPath=/ \
--set tracing.enabled=true \
--set tracing.ingress.enabled=true \
--set tracing.ingress.hosts={"tracing.xxxx.com"} \
--set tracing.ingress.annotations={"kubernetes.io/ingress.class: traefik"} \
--set tracing.contextPath=/ \
--set kiali.enabled=true \
--set kiali.ingress.enabled=true \
--set kiali.ingress.hosts={"kiali.xxxx.com"} \
--set kiali.ingress.annotations={"kubernetes.io/ingress.class: traefik"} \
--set kiali.contextPath=/ \
--set kiali.dashboard.viewOnlyMode=true \
--set kiali.dashboard.grafanaURL=http://gr.xxxx.com \
--set kiali.dashboard.jaegerURL=http://tracing.xxxx.com \
--set kiali.createDemoSecret=true \
--set istio_cni.enabled=true \
--set istio-cni.cniBinDir=/apps/cni/bin \
--set istio-cni.excludeNamespaces={"istio-system,monitoring,kubernetes-dashboard,kube-system"} \
--set global.k8sIngress.enabled=true \
--set global.proxy.clusterDomain="xxxx.local" \
--set global.proxy.accessLogFile="/dev/stdout" \
--set global.proxy.logLevel="info" \
--set global.disablePolicyChecks=false \
--set global.proxy.autoInject=disabled
# istio-cni 安裝
helm install install/kubernetes/helm/istio-cni --name-template istio-cni --namespace istio-system \
--set cniBinDir=/apps/cni/bin \
--set excludeNamespaces={"istio-system,monitoring,kubernetes-dashboard,kube-system"}
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。