首页 » 网站推广 » phpredisslaveof技巧_阿里云ECS搭建minikube和Istio162

phpredisslaveof技巧_阿里云ECS搭建minikube和Istio162

访客 2024-12-04 0

扫一扫用手机浏览

文章目录 [+]

1)买一台阿里云ECS,用CentOS系统;

2)装一个minikube,跑一个Guestbook运用验证成功;

phpredisslaveof技巧_阿里云ECS搭建minikube和Istio162

3)再装一个Istio1.6,跑一个Bookinfo运用验证成功。

phpredisslaveof技巧_阿里云ECS搭建minikube和Istio162
(图片来自网络侵删)

操持是一天弄好,但是看起来很大略的事情,还是碰着了很多问题,花了两天的韶光才终于弄好,分享给各位。

上头式配环境

本文是第二篇,先容Kubernetes示例程序验证和反向代理Ngnix的配置。
(话说,选择Ngnix给IngressGateway做一次反向代理实在是本宝宝不得已之举,求大神辅导精确打开办法。

步骤第三步:利用Kubernetes示例程序Guestbook测试

Guestbook是一个PHP Web运用,包括frontend、redis-master和redis-slave三个微做事。
个中,redis-master做事处理写要求,redis-slave做事处理读要求。

先用准备好的工具pull-google-container拉镜像。
如何利用请参考《填坑指南->1. 如何在海内拉gcr.io、k8s.gcr.io镜像?》须要拉的镜像有三个:

k8s.gcr.io/redis:e2egcr.io/google_samples/gb-redisslave:v3gcr.io/google-samples/gb-frontend:v4创建Redis Master Deployment 和 Service。
Deployment里面利用redis的image,replicas设置为1。

kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-deployment.yamlkubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-service.yaml创建Redis Slave Deployment 和 Service。
Deployment里面利用gb-redisslave:v3的image,replicas设置为2。

kubectl apply -f https://k8s.io/examples/application/guestbook/redis-slave-deployment.yamlkubectl apply -f https://k8s.io/examples/application/guestbook/redis-slave-service.yaml创建Guestbook Frontend Deployment和Service。
Deployment里面利用gb-frontend:v4的image,replicas设置为3。

kubectl apply -f https://k8s.io/examples/application/guestbook/frontend-deployment.yaml查看支配状态。
利用命令查看Pod和Service的支配状态:

pod:按照replica,支配了1个redis-master、2个redis-slave、3个frontend,可以看到他们都在 Running状态。

[root@node2 ~]# kubectl get podNAME READY STATUS RESTARTS AGEdetails-v1-7f6df6f54-r9kjm 2/2 Running 0 35hfrontend-678d98b8f7-248tw 1/1 Running 0 41hfrontend-678d98b8f7-jsnw7 1/1 Running 0 41hfrontend-678d98b8f7-k2lhn 1/1 Running 0 41hhello-node-bcbcd7f76-wlpql 1/1 Running 0 42hproductpage-v1-69886c8bcb-q278z 2/2 Running 0 35hratings-v1-6665bbd4db-h7zmg 2/2 Running 0 35hredis-master-545d695785-fvhld 1/1 Running 0 41hredis-slave-546fc99d45-czl25 1/1 Running 0 41hredis-slave-546fc99d45-hhbzl 1/1 Running 0 41hreviews-v1-7fd87d96bd-qkhlm 2/2 Running 0 35hreviews-v2-55d9bfb6d8-qk7n8 2/2 Running 0 35hreviews-v3-5776c54c64-6xbwv 2/2 Running 0 35h

service:

[root@node2 ~]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEdetails ClusterIP 10.103.152.201 <none> 9080/TCP 35hfrontend NodePort 10.102.61.100 <none> 80:30004/TCP 40hhello-node LoadBalancer 10.106.132.76 <pending> 8080:31662/TCP 41hkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 43hproductpage ClusterIP 10.110.6.242 <none> 9080/TCP 35hratings ClusterIP 10.96.192.242 <none> 9080/TCP 35hredis-master ClusterIP 10.108.247.204 <none> 6379/TCP 41hredis-slave ClusterIP 10.99.55.40 <none> 6379/TCP 41hreviews ClusterIP 10.98.243.11 <none> 9080/TCP 35h

可以看到frontend是通过NodePort起来的,可以通过命令得到访问地址:

[root@node2 ~]# minikube service frontend --urlhttp://172.26.205.16:30004

或者直策应用http://<ECS 私有ip>: 80映射端口(30004)访问即可。

测试运行状态。
由于配了nginx转发规则,因此利用http://<公有ip>:30005来访问:

Guestbook运用

第四步:利用nginx映射内网IP

由于用ECS的公网IP一贯访问不到做事,于是想到用nginx做一个转发。
后来开了工单问了阿里小哥哥,只要把程序监听在0.0.0.0端口,利用公网ip就可以访问。
对付k8s的pod,可以直接通过port-forward将端口映射出来,再加上--address 0.0.0.0就可以成功利用公网ip+端口的形式访问pod。
比如,对付grafana,可以将其在k8s里面的3000端口暴露出来,这样外网可以直接访问掌握面板。

kubectl -n istio-system port-forward --address 0.0.0.0 $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &

可想要通过ingress-gateway来访问K8s里面的service,始终不可以,不知道官方正解是什么,觉得每个做事都要配转发规则实在是有点儿原始,有理解的大佬欢迎留言见告我呀。

失落败的考试测验:利用nginx docker镜像

首先想到用docker起一个nginx container,在里面配置转发规则。

docker pull nginxdocker run -d -p 8080:80 --name nginx-web -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginxdocker start nginx-web

还是访问不到,我猜是要求直接转发到container内部,但是想要访问的做事并不是起在容器内部,以是访问不到(不知道我的预测对不对)。

于是放弃docker的办法,选择直接在ECS里安装nginx。

利用做事器版nginx添加源

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm安装Nginx

yum install -y nginx修正nginx.conf文件,添加转发规则在http标签下增加server定义,对须要转发做事的端口定义监听端口和目标路径:

upstream ingress{ server 172.26.205.16:32642; server 172.26.205.16; } server { listen 32643 default_server; listen [::]:32643 default_server; server_name _; location /productpage { proxy_pass http://ingress; proxy_http_version 1.1; } location ~ . { proxy_pass http://ingress; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }启动ngnix并设置开机自动运行

systemctl start nginx.servicesystemctl enable nginx.service

总之通过配置Nginx转发,目前可以正常访问ingress里的做事。

下一篇将先容Istio1.6安装和示例程序Bookinfo的配置。

填坑指南1. 如何在海内拉gcr.io、k8s.gcr.io镜像?

利用官方命令启动k8s运用一贯卡在init阶段,查看event创造拉镜像失落败。
缘故原由: k8s的镜像默认都是从谷歌拉,由于科学上网,只能借助开源项目https://github.com/anjia0532/gcr.io_mirror 拉镜像,再手动tag。

办理办法: 参照https://cloud.tencent.com/developer/article/1353088 1)添加pull-google-container工具脚本 pull-google.sh:

image=$1 echo $1 img=`echo $image | sed 's/k8s\.gcr\.io/anjia0532\/google-containers/g;s/gcr\.io/anjia0532/g;s/\//\./g;s/ /\n/g;s/_/-/g;s/anjia0532\./anjia0532\//g' | uniq | awk '{print ""$1""}'` echo "docker pull $img" docker pull $img echo "docker tag $img $image" docker tag $img $image~

2)放到/usr/local/bin下面:

chmod +x pull-google.sh && cp pull-google.sh /usr/local/bin/pull-google-container

3)利用pull-google-container命令,他直接做好image名称更换->拉image->打标签,非常省心。

pull-google-container gcr.io/google-samples/gb-frontend:v4gcr.io/google-samples/gb-frontend:v4docker pull anjia0532/google-samples.gb-frontend:v4v4: Pulling from anjia0532/google-samples.gb-frontendDigest: sha256:aaa5b327ef3b4cb705513ab674fa40df66981616950c7de4912a621f9ee03dd4Status: Image is up to date for anjia0532/google-samples.gb-frontend:v4docker tag anjia0532/google-samples.gb-frontend:v4 gcr.io/google-samples/gb-frontend:v42. 如何修正IngressGateway类型?

如果想将LoadBalancer的类型切换到nodeport,可通过这个命令设置:

kubectl patch service istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}'

之后通过私有IP+80端口的形式利用HTTP访问。

3. nginx反向代理返回HTTP 426状态码?

HTTP/1.1 426 Upgrade Required Upgrade: HTTP/2.0 Connection: Upgrade

缘故原由: nginx反向代理默认走http 1.0版本,但是被反向代理的container走的是1.1版本

办理办法: 转发处配置支持http1.1

4. nginx反向代理刷不出css怎么办?

缘故原由: 只对/productpage路径下的资源进行了转发,css、js等资源不在该路径下就找不到了。

办理办法: 配置proxy_set_header增加对css和js等资源的转发。

server { listen 32643 default_server; listen [::]:32643 default_server; server_name _; location /productpage { proxy_pass http://productpage_p; proxy_http_version 1.1; } location ~ . { proxy_pass http://productpage_p; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }5. istiod是什么?

istiod 是一个单体运用,它用较低的繁芜性供应了和之前版本同等的功能。
组成旧版掌握平面的做事都还以子模块的办法存在于项目之中,但供应了更好的运维体验。
操作者只需关注单一二进制文件的运行和升级了。
简言之,把之前繁芜的掌握面组件(Pilot、Gallery、Injector、Mixer和Citadel)作为内部子模块放到istiod里。

有两篇文章对istiod的内容作了先容,讲的挺好,推举看一下:

《(译)Istiod——回到单体的情由》

《Service Mesh 化繁为简: 基于 Istiod 回归单体设计》

#科技萌新创作营#

#技能攻关#

标签:

相关文章

360文件夹快速搜索,文件搜索功能在哪里

人们的工作和生活节奏越来越快。如何提高工作效率,节省时间,成为了人们关注的焦点。在众多办公软件中,360文件夹快速搜索以其强大的搜...

网站推广 2025-04-02 阅读0 评论0