环境准备
-
virtualBox安装
直接官网下载后安装即可,网上也有详细教程。镜像使用的centos7。
镜像:
-
网络配置
使用桥接的方式
-
docker安装
bash
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看所有仓库中docker版本yum list docker-ce --showduplicates | sort -r
选择安装18.06.1版本的yum install docker-ce-18.06.1.ce
启动start docker enable docker docker version
- docker配置换源
bash
dig @114.114.114.114 registry-1.docker.io
查看IP
vim /etc/hosts
输入内容:IP地址 registry-1.doker.io.
bash
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
- kubectl安装
下载文件到本地后直接安装
bash
sudo install kubectl /usr/local/bin/kubectl
chmod +x kubectl
mv kubectl /usr/local/bin/kubectl
链接:
https://storage.googleapis.com/kubernetes-release/release/v1.16.0/bin/linux/amd64/kubectl
minikube安装
同样,下载文件到本地后,拉到虚拟机:
bash
chmod +x minikube
sudo install minikube /usr/local/bin/minikube
mv minikube /usr/local/bin/minikube
bash
minikube start --registry-mirror=https://registry.docker-cn.com --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --vm-driver=none
启动成功的截图:
查看状态:
bash
kubectl get node
istio安装
下载安装包,拉到机器上(github)
将下列环境变量添加etc/profile后source /etc/profile:
export ISTIO_HOME=/root/istio-1.11.1/bin
export PATH= I S T I O H O M E : ISTIO_HOME: ISTIOHOME:PATH
验证:
bash
istioctl version(需启动K8S)
安装:
istioctl install --set profile=demo -y
有问题:
查看日志:
bash
kubectl describe pod istiod-5b9d44c58b-nnkdj -n istio-system
日志显示拉不到镜像,推测是网络问题,通过上文4.的docker源配置修改,先用docker拉到这些镜像后,再次启动,成功了:
查看状态:
bash
kubectl get pods --all-namespaces
配置自动注入envoy:
bash
kubectl label namespace default istio-injection=enabled
bookinfo测试
运行官方demo:
bash
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
启动成功:
查看状态:
bash
kubectl get svc,po -o wide
验证:
bash
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>"
出现响应则启动成功。
- 对外访问
关联网关:
bash
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
查看端口映射:
bash
kubectl get svc istio-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.200.138.202 10.0.0.150 15021:30531/TCP,80:31380/TCP,443:31390/TCP,31400:31345/TCP,15443:30249/TCP 2m10s
如果EXTERNAL-IP设置了该值,则您的环境具有可用于入口网关的外部负载平衡器。如果EXTERNAL-IP值是(或永久),则您的环境不为入口网关提供外部负载平衡器。在这种情况下,您可以使用服务的节点端口来访问网关。
这里80对应的端口是Http服务的端口,映射的主机端口31380;
这里443对应的端口是Https服务的端口,映射的主机端口31390;
确定IP:
可以通过下面命令找个hostIP。
bash
[root@k8s-master istio-1.4.2]# kubectl get po -l istio=ingressgateway -n istio-system -o yaml | grep hostIP: -C3
---
state:
running:
startedAt: "2019-12-24T06:46:29Z"
hostIP: 192.168.43.239
phase: Running
podIP: 10.244.3.136
qosClass: Burstable
---
本机IP:192.168.43.239
在虚拟机外部通过IP+端口+uri访问服务:
启动kiali
部署:
bash
kubectl apply -f samples/addons
查看部署状态,镜像较大,需要都running:
bash
kubctl get pods -n istio-system
拉不到镜像的情况,在docker中手动拉取(由于源和超时时间等原因)
docker pull quay.io/kiali/kiali:v1.22
关键!!!
将kali service 的服务类型设置为 nodeport,以供外部浏览器访问:
bash
kubectl patch svc -n istio-system kiali -p '{"spec": {"type": "NodePort"}}'
istioctl dashboard kiali --address 192.168.43.239
通过上文查看20001的映射端口,虚拟机外部浏览器通过IP+端口+uri访问:
虚拟机重启后重新部署
1、启动minikube
2、启动istio
3、启动bookinfo
4、启动kiali
bash
kubectl delete pod kiali-89fd7f87b-tb2rp -n istio-system
参考链接:
https://baijiahao.baidu.com/s?id=1764144114247192969\&wfr=spider\&for=pc
https://www.cnblogs.com/yinzhengjie/p/18064053#3下载指定版本的istio