【实验0001】K8S环境下使用skywalking和Envoy 访问日志服务对service mesh进行观察

【实验0001】K8S环境下使用skywalking和Envoy 访问日志服务对service mesh进行观察

部分原创,部分缝合。

版本信息

  • centos version: 7.9 minimal
  • minikube version: v1.26.0
  • kubernetes version: v1.24.1
  • docker version: 20.10.21
  • istioctl version: 1.14.1
  • helm version: 3.9.2

硬件信息

  • ESXI5.5.0 虚拟机 ☆开启VMX☆
  • CPU:16c16T
  • MEM:64GB

开始实验

  • 安装操作系统centos 7.9 minimal 过程不表
  • minikube安装
#安装工具包,方便操作

yum install -y net-tools lrzsz wget unzip

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

# 生效
sysctl --system  

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-20.10.21-3.el7
systemctl enable docker && systemctl start docker
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
  "dns":["8.8.8.8","114.114.114.114"]
}
EOF
systemctl daemon-reload
systemctl restart docker

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#yum安装kubectl
yum install -y kubectl-1.24.1


#新建一个普通用户
useradd dev
passwd dev
usermod -a -G wheel dev
usermod -a -G docker dev

#切换到dev用户
su - dev
#后续命令全部使用dev用户执行
#如curl无法下载,请手动下载到本地再上传到服务器然后执行安装命令。
curl -LO https://storage.googleapis.com/minikube/releases/v1.26.0/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

#上传minikube基础镜像(镜像下载神秘代码:1janEtbwY3TNH3a_c80npVg🐴pwov)
minikube_images_v1.24.1.tar 
docker load -i minikube_images_v1.24.1.tar

minikube start --cpus=4 --memory 8192 --disk-size 32g --kubernetes-version=v1.24.1
#会下载两个镜像,一个stable_v0.0.32,一个preloaded-images-k8s-v18-v1.24.1-docker-overlay2-amd64
#第一次启动肯定失败,不要慌,不要ctrl+c!!!等待他自己失败。

#导入基础镜像到minikube(全入一遍以防万一)
minikube image load k8s.gcr.io/pause:3.7
minikube image load k8s.gcr.io/pause:3.6
minikube image load k8s.gcr.io/kube-scheduler:v1.24.1
minikube image load k8s.gcr.io/kube-proxy:v1.24.1
minikube image load k8s.gcr.io/kube-controller-manager:v1.24.1
minikube image load k8s.gcr.io/kube-apiserver:v1.24.1
minikube image load k8s.gcr.io/etcd:3.5.3-0
minikube image load k8s.gcr.io/coredns/coredns:v1.8.6
minikube image load gcr.io/k8s-minikube/storage-provisioner:v5

minikube stop
minikube start --cpus=4 --memory 8192 --disk-size 32g --kubernetes-version=v1.24.1
##给阿姨倒一杯卡不踢no!!!!!等待
##出现  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default 完成
kubectl get no 出现minikube节点,minikube的安装到此结束。

  • 安装istio(使用dev用户)
export ISTIO_VERSION=1.7.1

curl -L https://istio.io/downloadIstio | sh - 

sudo mv $PWD/istio-$ISTIO_VERSION/bin/istioctl /usr/local/bin/

istioctl install --set profile=demo

#启动访问日志服务
istioctl  manifest install \
        --set meshConfig.enableEnvoyAccessLogService=true \
        --set meshConfig.defaultConfig.envoyAccessLogService.address=skywalking-oap.istio-system:11800

#给命名空间干上标签        
kubectl label namespace default istio-injection=enabled

  • 安装helm
curl -sSLO https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz

sudo tar xz -C /usr/local/bin --strip-components=1 linux-amd64/helm -f helm-v3.0.0-linux-amd64.tar.gz

# Clone SkyWalking Helm Chart

git clone https://ghproxy.com/https://github.com/apache/skywalking-kubernetes

cd skywalking-kubernetes/chart

git reset --hard dd749f25913830c47a97430618cefc4167612e75

# Update dependencies

helm dep up skywalking

# 发布 SkyWalking

helm -n istio-system install skywalking skywalking \
        --set oap.storageType='h2'\
        --set ui.image.tag=8.4.0 \
        --set oap.image.tag=8.4.0-es7 \
        --set oap.replicas=1 \
        --set oap.env.SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS=k8s-mesh \
        --set oap.env.JAVA_OPTS='-Dmode=' \
        --set oap.envoy.als.enabled=true \
        --set elasticsearch.enabled=false

export POD_NAME=$(kubectl get pods -A -l "app=skywalking,release=skywalking,component=ui" -o name)

echo $POD_NAME

kubectl -n istio-system --address 0.0.0.0 port-forward $POD_NAME 8080:8080
##此时通过ip:port已经可以访问skywalking页面了,但是没有数据,在部署demo系统以后我们回来再看。

到此最恶心的一步来了!(可以直接跳过步骤,方法在最后)

  • 安装skaffold
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.0.0/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/
  • 下载源码
git clone https://ghproxy.com/https://github.com/GoogleCloudPlatform/microservices-demo.git
  • 修改代码中所有出现的githubURL前面增加代理https://ghproxy.com
  • 修改pip源,增加go代理,入下图示例:
#下图中的修改的字符串如下:
RUN go env -w GOPROXY=https://goproxy.cn

https://ghproxy.com/

-i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述

  • 最后是进入microservices-demo目录下,直接执行
skaffold run
  • 漫长的等待后,kubectl get po -n default 就会出现11个微服务了,其中各种报错,大家自行google或者百度吧。
kubectl --address 0.0.0.0 port-forward svc/frontend-external 8090:80

访问ip:port 即可访问demo了

在这里插入图片描述

此时再去看skywalking的仪表盘

在这里插入图片描述

直接下载目标镜像

docker pull gcr.io/google-samples/microservices-demo/emailservice:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/checkoutservice:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/recommendationservice:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/frontend:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/paymentservice:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/productcatalogservice:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/cartservice:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/loadgenerator:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/currencyservice:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/shippingservice:v0.4.1
docker pull gcr.io/google-samples/microservices-demo/adservice:v0.4.1


minikube image load gcr.io/google-samples/microservices-demo/emailservice:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/checkoutservice:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/recommendationservice:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/frontend:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/paymentservice:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/productcatalogservice:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/cartservice:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/loadgenerator:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/currencyservice:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/shippingservice:v0.4.0
minikube image load gcr.io/google-samples/microservices-demo/adservice:v0.4.0

kubectl apply -f https://ghproxy.com/https://github.com/GoogleCloudPlatform/microservices-demo/blob/main/release/kubernetes-manifests.yaml

kubectl --address 0.0.0.0 port-forward svc/frontend-external 8090:80

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值