K8s istio installation on arm64

istio have supported arm64 since 1.15 release https://istio.io/latest/news/releases/1.15.x/announcing-1.15/#arm64-support.
BTW, istio-1.15.0 bookinfo sample application use image tag 1.16.4 in samples/bookinfo/platform/kube/bookinfo.yaml which does not support arm64.
maybe it’s a mistake.

root@ubuntu:/home/ubuntu# uname -m
aarch64
root@ubuntu:/home/ubuntu# kubectl get node -o wide 
NAME     STATUS   ROLES                  AGE     VERSION    INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
ubuntu   Ready    control-plane,master   2m46s   v1.22.13   192.168.0.164   <none>        Ubuntu 20.04.1 LTS   5.4.0-1015-raspi   docker://20.10.12

root@ubuntu:/home/ubuntu/istio-1.16.0# istioctl install --set profile=demo -y
✔ Istio core installed                                                                                                                                                                                     
✔ Istiod installed                                                                                                                                                                                         
✔ Egress gateways installed                                                                                                                                                                                
✔ Ingress gateways installed                                                                                                                                                                               
✔ Installation complete                                                                                                                                                                                    Making this installation the default for injection and validation.

Thank you for installing Istio 1.16.  Please take a few minutes to tell us about your install/upgrade experience!  https://forms.gle/99uiMML96AmsXY5d6

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl get pod -A 
NAMESPACE      NAME                                    READY   STATUS    RESTARTS        AGE
istio-system   istio-egressgateway-78fb5cf46-qww9j     1/1     Running   0               3m22s
istio-system   istio-ingressgateway-77b9d69b74-drksl   1/1     Running   0               3m22s
istio-system   istiod-67fcb675b5-2cg8g                 1/1     Running   0               6m36s
kube-flannel   kube-flannel-ds-qn9jh                   1/1     Running   0               9m38s
kube-system    coredns-78fcd69978-m82rr                1/1     Running   0               10m
kube-system    coredns-78fcd69978-r644g                1/1     Running   0               10m
kube-system    etcd-ubuntu                             1/1     Running   1               10m
kube-system    kube-apiserver-ubuntu                   1/1     Running   1               10m
kube-system    kube-controller-manager-ubuntu          1/1     Running   10 (111s ago)   10m
kube-system    kube-proxy-hx6t5                        1/1     Running   0               10m
kube-system    kube-scheduler-ubuntu                   1/1     Running   10 (107s ago)   10m

root@ubuntu:/home/ubuntu# docker images | grep istio
istio/proxyv2                                    1.16.0     4e72257ebac7   10 days ago     241MB
istio/pilot                                      1.16.0     3715561d16a0   10 days ago     179MB

root@ubuntu:/home/ubuntu/istio-1.16.0# docker image inspect 4e72257ebac7 | grep Architecture
        "Architecture": "arm64",
root@ubuntu:/home/ubuntu/istio-1.16.0# docker image inspect 3715561d16a0 | grep Architecture
        "Architecture": "arm64",

check if bookinfo can work as expected

root@ubuntu:/home/ubuntu/istio-1.16.0# 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

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl get svc 
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
details       ClusterIP   10.102.124.99    <none>        9080/TCP   30s
kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP    14m
productpage   ClusterIP   10.101.17.75     <none>        9080/TCP   27s
ratings       ClusterIP   10.109.145.216   <none>        9080/TCP   30s
reviews       ClusterIP   10.110.51.199    <none>        9080/TCP   30s

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl get pod
NAME                              READY   STATUS    RESTARTS   AGE
details-v1-6758dd9d8d-vpzvv       2/2     Running   0          15m
productpage-v1-797d845774-kxwr7   2/2     Running   0          15m
ratings-v1-f849dc6d-wwfsb         2/2     Running   0          15m
reviews-v1-74fb8fdbd8-k4c2x       2/2     Running   0          15m
reviews-v2-58d564d4db-54kj5       2/2     Running   0          15m
reviews-v3-55545c459b-6wkzc       2/2     Running   0          15m

root@ubuntu:/home/ubuntu/istio-1.16.0# 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>"
<title>Simple Bookstore App</title>

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created

root@ubuntu:/home/ubuntu/istio-1.16.0# istioctl analyze

✔ No validation issues found when analyzing namespace: default.

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl get svc istio-ingressgateway -n istio-system
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                      AGE
istio-ingressgateway   LoadBalancer   10.99.213.194   <pending>     15021:30257/TCP,80:31669/TCP,443:32003/TCP,31400:31287/TCP,15443:30060/TCP   31m

root@ubuntu:/home/ubuntu/istio-1.16.0# export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
root@ubuntu:/home/ubuntu/istio-1.16.0# export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

root@ubuntu:/home/ubuntu/istio-1.16.0# export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')
root@ubuntu:/home/ubuntu/istio-1.16.0# export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
root@ubuntu:/home/ubuntu/istio-1.16.0# echo "$GATEWAY_URL"
192.168.0.164:31669
root@ubuntu:/home/ubuntu/istio-1.16.0# echo "http://$GATEWAY_URL/productpage"
http://192.168.0.164:31669/productpage

check if envoy can access logs

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f samples/sleep/sleep.yaml
serviceaccount/sleep created
service/sleep created
deployment.apps/sleep created

root@ubuntu:/home/ubuntu/istio-1.16.0# export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f samples/httpbin/httpbin.yaml
serviceaccount/httpbin created
service/httpbin created
deployment.apps/httpbin created

root@ubuntu:/home/ubuntu/istio-1.16.0# cat telemetry.yaml 
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  accessLogging:
    - providers:
      - name: envoy
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f telemetry.yaml 
telemetry.telemetry.istio.io/mesh-default created

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418
*   Trying 10.105.37.52:8000...
* Connected to httpbin (10.105.37.52) port 8000 (#0)
> GET /status/418 HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.86.0-DEV
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 503 Service Unavailable
< content-length: 19
< content-type: text/plain
< date: Tue, 22 Nov 2022 13:04:30 GMT
< server: envoy
< 
{ [19 bytes data]
* Connection #0 to host httpbin left intact
no healthy upstream

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl logs -l app=sleep -c istio-proxy
2024-04-14T13:01:25.322273Z	info	ads	XDS: Incremental Pushing:0 ConnectedEndpoints:2 Version:
2024-04-14T13:01:25.322590Z	info	cache	returned workload trust anchor from cache	ttl=23h59m59.677420102s
2024-04-14T13:01:25.322585Z	info	cache	returned workload trust anchor from cache	ttl=23h59m59.677434565s
2024-04-14T13:01:25.322902Z	info	cache	returned workload certificate from cache	ttl=23h59m59.677122269s
2024-04-14T13:01:25.323744Z	info	ads	SDS: PUSH request for node:sleep-784d69f945-lc9gf.default resources:1 size:4.0kB resource:default
2024-04-14T13:01:25.323854Z	info	ads	SDS: PUSH request for node:sleep-784d69f945-lc9gf.default resources:1 size:1.1kB resource:ROOTCA
2024-04-14T13:01:25.324195Z	info	cache	returned workload trust anchor from cache	ttl=23h59m59.675829232s
2024-04-14T13:01:26.515121Z	info	Readiness succeeded in 3.513115609s
2024-04-14T13:01:26.516210Z	info	Envoy proxy is ready
[2024-04-14T13:04:30.679Z] "GET /status/418 HTTP/1.1" 503 UH no_healthy_upstream - "-" 0 19 0 - "-" "curl/7.86.0-DEV" "b9c7eb47-e19e-9451-af98-8235050ddd54" "httpbin:8000" "-" outbound|8000||httpbin.default.svc.cluster.local - 10.105.37.52:8000 10.244.0.13:38310 - default

root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl logs -l app=httpbin -c istio-proxy
2024-04-14T13:06:29.293568Z	info	cache	Root cert has changed, start rotating root cert
2024-04-14T13:06:29.293617Z	info	ads	XDS: Incremental Pushing:0 ConnectedEndpoints:2 Version:
2024-04-14T13:06:29.293842Z	info	cache	returned workload certificate from cache	ttl=23h59m59.706182487s
2024-04-14T13:06:29.293892Z	info	cache	returned workload trust anchor from cache	ttl=23h59m59.706117395s
2024-04-14T13:06:29.294115Z	info	cache	returned workload trust anchor from cache	ttl=23h59m59.705898858s
2024-04-14T13:06:29.294766Z	info	ads	SDS: PUSH request for node:httpbin-74fb669cc6-tbxnk.default resources:1 size:4.0kB resource:default
2024-04-14T13:06:29.294914Z	info	ads	SDS: PUSH request for node:httpbin-74fb669cc6-tbxnk.default resources:1 size:1.1kB resource:ROOTCA
2024-04-14T13:06:29.295187Z	info	cache	returned workload trust anchor from cache	ttl=23h59m59.704838858s
2024-04-14T13:06:31.346792Z	info	Readiness succeeded in 3.531184609s
2024-04-14T13:06:31.347862Z	info	Envoy proxy is ready
arm64 是一种处理器架构,适用于 ARM 公司设计的 64 位处理器。k8sKubernetes)是一款开源的容器编排管理工具,用于快速部署和管理容器应用。离线版的 k8s 是指不需要连接互联网,可以在没有网络的环境下安装和使用 k8s。因此,arm64 离线 k8s 是针对 arm64 处理器架构的,可以离线安装和使用的 k8s 版本。 对于采用 arm64 处理器架构的设备或服务器来说,使用 arm64 离线 k8s 可以方便地进行容器应用的管理。在没有网络连接的情况下,使用离线版的 k8s 不会受到互联网的影响,可以更加安全。此外,arm64 离线 k8s 还可以解决许多网络问题,如丢包、延迟等,提高容器应用的可靠性和性能。 使用 arm64 离线 k8s,用户需要先下载和安装离线版的 k8s,并将其部署到需要管理的设备或服务器上。离线版的 k8s 可以通过镜像和其他资源进行打包,也可以通过其他工具进行下载和安装。完成安装后,在离线环境下就可以使用 k8s 进行容器应用的管理,包括部署、升级、维护等操作。用户可以在 k8s 的控制台中对容器应用进行相关设置和配置,实现容器应用的快速部署和便捷管理。 总之,arm64 离线 k8s 是一种适用于 arm64 处理器架构的离线版 k8s,可以在无网络或网络不稳定的情况下,快速安装和使用 k8s 进行容器应用的管理。它不仅可以提高容器应用的可靠性和性能,还具有更加安全和便捷的特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值