教你一步一步用 ubuntu / microk8s 安裝 istio (國內(nèi)源)

屏幕快照 2020-05-28 上午11.00.04.png

1、安裝 snap

如果 ubuntu 上沒有 snap , 需要先安裝 snap (ubuntu 18 已自帶 snap)。 另外如果系統(tǒng)是 ubuntu 14,建議先升級到 16 或 18。
國內(nèi)snap加速可以用 騰訊云 (https://mirrors.cloud.tencent.com/help/ubuntu.html
)的源,很快!

$ sudo apt update
$ sudo apt install snapd
...
$ sudo systemctl restart snapd

2、安裝 microk8s

$ sudo snap install microk8s --classic

詳細的權(quán)限設置可以 參看 microk8s 官網(wǎng)
https://microk8s.io/docs

出于簡化的目的,我們可以用 kubectl 替代 microk8s.kubectl

$ sudo snap alias microk8s.kubectl kubectl

3、檢查 microk8s 狀態(tài)

$ sudo microk8s.inspect

如果報了一些警告,請按照警告進行修改

...
 WARNING:  IPtables FORWARD policy is DROP. Consider enabling traffic forwarding with: sudo iptables -P FORWARD ACCEPT 
The change can be made persistent with: sudo apt-get install iptables-persistent
WARNING:  Docker is installed. 
Add the following lines to /etc/docker/daemon.json: 
{
    "insecure-registries" : ["localhost:32000"] 
}
and then restart docker with: sudo systemctl restart docker

4、配置 microk8s 內(nèi)置 docker 的 registry.mirrors

編輯 /var/snap/microk8s/current/args/containerd-template.toml 文件
endpoint 添加 新的 國內(nèi) registry.mirrors , 如 "https://docker.mirrors.ustc.edu.cn"

...
[plugins.cri.registry]
      [plugins.cri.registry.mirrors]
        [plugins.cri.registry.mirrors."docker.io"]
          endpoint = [
                "https://docker.mirrors.ustc.edu.cn",
                "https://hub-mirror.c.163.com",
                "https://mirror.ccs.tencentyun.com",
                "https://registry-1.docker.io"
          ]

然后,先停止 microk8s,再啟動 microk8s

$ sudo microk8s stop
$ sudo microk8s start

5、啟動 microk8s dns

先安裝一個 最必要 的 dns 插件

$ sudo microk8s.enable dns

觀察啟動的情況

$ sudo kubectl get pods -n kube-system

NAME                      READY   STATUS              RESTARTS   AGE
coredns-87fcbc976-pckpj   0/1     ContainerCreating   0          60m

會發(fā)現(xiàn) coredns 一直處于 ContainerCreating 狀態(tài), 查看 pods 情況

$ sudo kubectl describe pods coredns-87fcbc976-pckpj -n kube-system
...
Warning  FailedCreatePodSandBox  58s                    
kubelet, doudong   Failed to create pod sandbox: rpc error: code = Unknown desc = failed to 
get sandbox image "k8s.gcr.io/pause:3.1": failed to pull image "k8s.gcr.io/pause:3.1": failed to resolve image "k8s.gcr.io/pause:3.1": no available registry endpoint: 
failed to do request: Head "https://k8s.gcr.io/v2/pause/manifests/3.1": dial tcp 64.233.189.82:443: i/o timeout

發(fā)現(xiàn)由于某種原因 無法獲取 指定鏡像 k8s.gcr.io/pause:3.1


6、手動下載鏡像

步驟如下:
6.1、下載docker hub 上的 鏡像

$ sudo docker pull mirrorgooglecontainers/pause:3.1

6.2、修改鏡像 tag

$ sudo docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

6.3、保存鏡像為 tar 文件

$ sudo docker save k8s.gcr.io/pause > pause.tar

6.4、將tar 文件上傳到 microk8s 的 docker 中

$ sudo microk8s.ctr image import pause.tar
unpacking k8s.gcr.io/pause:3.1 (sha256:3efe4ff64c93123e1217b0ad6d23b4c87a1fc2109afeff55d2f27d70c55d8f73)...done

6.5、過一下,再觀察 coredns 狀態(tài),會發(fā)現(xiàn)已經(jīng)成功的 running (如果還不成功,則繼續(xù) 通過 kubectl describe pods ... 觀察 pods 的狀態(tài),如果有下載不成功的鏡像,再如法炮制一遍。

6.6 如果 coredns 成功啟動,會顯示如下

$ sudo kubectl get pods -n kube-system
NAME                      READY   STATUS    RESTARTS   AGE
coredns-87fcbc976-pckpj   1/1     Running   0          90m

7、microk8s 啟動 istio

先用 microk8s 下載 istio

$ sudo microk8s.enable istio
Enabling Istio
Fetching istioctl version v1.3.4.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   635  100   635    0     0    292      0  0:00:02  0:00:02 --:--:--   292
  7 36.3M    7 2667k    0     0  23557      0  0:26:59  0:01:55  0:25:04 25609

下載速度取決于你的網(wǎng)絡情況,但是成功下載是沒有問題的。

安裝完成后,查看 istio 容器情況

$ sudo kubectl get pods -n istio-system

由于要拉取鏡像,所以全部容器啟動完成,需要一些時間,這也取決于你的網(wǎng)絡狀況。

全部正常啟動后的情況如下:

NAME                                      READY   STATUS      RESTARTS   AGE
grafana-78758665bb-5vp4j                  1/1     Running     0          9h
istio-citadel-799bf7ddb9-2v2mm            1/1     Running     1          9h
istio-egressgateway-78d46d89bf-w44bp      1/1     Running     1          9h
istio-galley-cbf67694f-4lfnp              1/1     Running     1          9h
istio-grafana-post-install-1.3.4-8wpbm    0/1     Completed   0          9h
istio-ingressgateway-5d86f5f694-2fhnl     1/1     Running     1          9h
istio-pilot-5867df8f85-hjj69              2/2     Running     2          9h
istio-policy-54d878f564-q6p42             2/2     Running     8          9h
istio-security-post-install-1.3.4-d2bw2   0/1     Completed   0          9h
istio-sidecar-injector-66bc6cf76b-4nzbc   1/1     Running     2          9h
istio-telemetry-647b9c8ccd-mzs4v          2/2     Running     9          9h
istio-tracing-6cb4f885d4-5tv7g            1/1     Running     1          9h
kiali-68d8fc4d54-p8q8n                    1/1     Running     1          9h
prometheus-5c8fb8f746-jk89s               1/1     Running     1          9h

總結(jié)

通過 microk8s 安裝 istio 過程中最重要的其實是在 第5步 的 安裝 dns 插件, 只要裝好了 dns 插件(需要手動 或 通過代理安裝),后續(xù)的安裝工作基本上都能順利完成。


使用代理

如果有代理的話,也可以省去 第 6 步 的麻煩,修改
${SNAP_DATA}/args/containerd-env
(通常是 /var/snap/microk8s/current/args/containerd-env)
加入兩行

HTTPS_PROXY=<你的代理地址:端口>
HTTP_PROXY=<你的代理地址:端口>

然后

$ sudo microk8s stop
$ sudo microk8s start
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容