k8s集群通过helm部署skywalking

1、安装helm
下载脚本安装

~# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
~# chmod 700 get_helm.sh
~# ./get_helm.sh

或者下载包进行安装

~# wget https://get.helm.sh/helm-canary-linux-amd64.tar.gz
~# mv helm /usr/local/bin
~# chmod +x /usr/local/bin/helm

2、安装nfs

### 这里就将 nfs-server 安装在 master 节点

# 安装 nfs-utils、rpcbind 软件包(===所有节点===)
yum -y install nfs-utils rpcbind

# 创建目录
sudo mkdir -p /data/nfs
 
# 添加权限
sudo chmod 777 -R /data/nfs
 
# 编辑文件,添加以下内容
sudo vim /etc/exports
/data/nfs 172.16.10.0/24(rw,no_root_squash,sync)

# 重启服务
systemctl start rpcbind && systemctl enable rpcbind
systemctl start nfs && systemctl enable nfs(所有节点)

# 配置生效
exportfs -rv

# 查看共享目录
sudo showmount -e 192.168.10.100
# 返回值如下,表示创建成功
Export list for 192.168.10.100:
/data/nfs	172.16.10.*

3、安装skypwalk服务
参考链接
1)设置环境变量

# change the release version according to your need
export SKYWALKING_RELEASE_VERSION=4.5.0 
# change the release name according to your scenario 
export SKYWALKING_RELEASE_NAME=skywalking
# change the namespace to where you want to install SkyWalking  
export SKYWALKING_RELEASE_NAMESPACE=default  

2)通过Docker Helm repository安装skywalking
编辑配置文件

cd /root/skywalking-kubernetes/chart
cat  skywalking/values-my-es.yaml 
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Default values for skywalking.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

oap:
  image:
    tag: 9.6.0
  storageType: elasticsearch

ui:
  image:
    tag: 9.6.0

elasticsearch:
  enabled: false
  config:               # For users of an existing elasticsearch cluster,takes effect when `elasticsearch.enabled` is false
    host: elasticsearch-es-http
    port:
      http: 9200
    user: "xxx"         # [optional]
    password: "xxx"     # [optional]

kubectl create namespace skywalking
helm install "${SKYWALKING_RELEASE_NAME}" \
  oci://registry-1.docker.io/apache/skywalking-helm \
  --version "${SKYWALKING_RELEASE_VERSION}" \
  -n "${SKYWALKING_RELEASE_NAMESPACE}" \
  --set oap.image.tag=9.6.0 \
  --set oap.storageType=elasticsearch \
  --set ui.image.tag=9.6.0

结果输出如下

NAME: skywalking
LAST DEPLOYED: Sun Dec 24 03:18:33 2023
NAMESPACE: skywalking
STATUS: deployed
REVISION: 1
NOTES:
************************************************************************
*                                                                      *
*                 SkyWalking Helm Chart by SkyWalking Team             *
*                                                                      *
************************************************************************

Thank you for installing skywalking-helm.

Your release is named skywalking.

Learn more, please visit https://skywalking.apache.org/

Get the UI URL by running these commands:
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl port-forward svc/skywalking-skywalking-helm-ui 8080:80 --namespace skywalking
#################################################################################
######   WARNING: Persistence is disabled!!! You will lose your data when   #####
######            the SkyWalking's storage ES pod is terminated.            #####
#################################################################################

查看对应pods

kubectl get pods -n skywalking
NAME                                              READY   STATUS      RESTARTS   AGE
elasticsearch-master-0                            1/1     Running     0          34h
elasticsearch-master-1                            1/1     Running     0          34h
elasticsearch-master-2                            1/1     Running     0          34h
skywalking-skywalking-helm-oap-5c7bc85f97-48rbt   1/1     Running     0          34h
skywalking-skywalking-helm-oap-5c7bc85f97-v74ls   1/1     Running     0          34h
skywalking-skywalking-helm-oap-init-ftc8m         0/1     Completed   0          34h
skywalking-skywalking-helm-ui-b9f69c6fc-wgjvr     1/1     Running     0          34h

3)查看配置文件
A、查看skywalking-skywalking-helm-ui的相关文件内容
depoyment文本内容

~# kubectl edit deployment skywalking-skywalking-helm-ui -n skywalking

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
    meta.helm.sh/release-name: skywalking
    meta.helm.sh/release-namespace: skywalking
  creationTimestamp: "2023-12-23T19:18:33Z"
  generation: 1
  labels:
    app: skywalking
    app.kubernetes.io/managed-by: Helm
    chart: skywalking-helm-4.5.0
    component: ui
    heritage: Helm
    release: skywalking
  name: skywalking-skywalking-helm-ui
  namespace: skywalking
  resourceVersion: "46556645"
  uid: c0e3217e-4456-4252-b28c-cb53c26e5bf1
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: skywalking
      component: ui
      release: skywalking
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: skywalking
        component: ui
        release: skywalking
    spec:
      containers:
      - env:
        - name: SW_OAP_ADDRESS
          value: http://skywalking-skywalking-helm-oap:12800
        image: skywalking.docker.scarf.sh/apache/skywalking-ui:9.6.0
        imagePullPolicy: IfNotPresent
        name: ui
        ports:
        - containerPort: 8080
          name: page
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30        

services

~# kubectl edit svc skywalking-skywalking-helm-ui -n skywalking

apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: skywalking
    meta.helm.sh/release-namespace: skywalking
  creationTimestamp: "2023-12-23T19:18:33Z"
  labels:
    app: skywalking
    app.kubernetes.io/managed-by: Helm
    chart: skywalking-helm-4.5.0
    component: ui
    heritage: Helm
    release: skywalking
  name: skywalking-skywalking-helm-ui
  namespace: skywalking
  resourceVersion: "46556519"
  uid: b4e3da64-da1a-4dcb-9324-537773ce251a
spec:
  clusterIP: 10.68.222.100
  clusterIPs:
  - 10.68.222.100
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: skywalking
    component: ui
    release: skywalking
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

A、查看skywalking-skywalking-helm-oap的相关文件内容
deployment

~# kubectl edit deployment skywalking-skywalking-helm-oap -n skywalking

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
    meta.helm.sh/release-name: skywalking
    meta.helm.sh/release-namespace: skywalking
  creationTimestamp: "2023-12-23T19:18:33Z"
  generation: 1
  labels:
    app: skywalking
    app.kubernetes.io/managed-by: Helm
    chart: skywalking-helm-4.5.0
    component: oap
    heritage: Helm
    release: skywalking
  name: skywalking-skywalking-helm-oap
  namespace: skywalking
  resourceVersion: "46557028"
  uid: 83562701-0540-479d-b45c-72445e0d5bcf
spec:
  progressDeadlineSeconds: 600
  replicas: 2
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: skywalking
      component: oap
      release: skywalking
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      creationTimestamp: null
      labels:
        app: skywalking
        component: oap
        release: skywalking
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - podAffinityTerm:
              labelSelector:
                matchLabels:
                  app: skywalking
                  component: oap
                  release: skywalking
              topologyKey: kubernetes.io/hostname
            weight: 1
      containers:
      - env:
        - name: JAVA_OPTS
          value: -Dmode=no-init -Xmx2g -Xms2g
        - name: SW_CLUSTER
          value: kubernetes
        - name: SW_CLUSTER_K8S_NAMESPACE
          value: skywalking
        - name: SW_CLUSTER_K8S_LABEL
          value: app=skywalking,release=skywalking,component=oap
        - name: SKYWALKING_COLLECTOR_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: SW_STORAGE
          value: elasticsearch
        - name: SW_STORAGE_ES_CLUSTER_NODES
          value: elasticsearch-master:9200
        image: skywalking.docker.scarf.sh/apache/skywalking-oap-server:9.6.0
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          initialDelaySeconds: 5
          periodSeconds: 10
          successThreshold: 1
          tcpSocket:
            port: 12800
          timeoutSeconds: 1
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      initContainers:
      - command:
        - sh
        - -c
        - for i in $(seq 1 60); do nc -z -w3 elasticsearch-master 9200 && exit 0 ||
          sleep 5; done; exit 1
        image: busybox:1.30
        imagePullPolicy: IfNotPresent
        name: wait-for-elasticsearch
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: skywalking-skywalking-helm-oap
      serviceAccountName: skywalking-skywalking-helm-oap
      terminationGracePeriodSeconds: 30 

service

~# kubectl edit svc skywalking-skywalking-helm-oap -n skywalking

apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: skywalking
    meta.helm.sh/release-namespace: skywalking
  creationTimestamp: "2023-12-23T19:18:33Z"
  labels:
    app: skywalking
    app.kubernetes.io/managed-by: Helm
    chart: skywalking-helm-4.5.0
    component: oap
    heritage: Helm
    release: skywalking
  name: skywalking-skywalking-helm-oap
  namespace: skywalking
  resourceVersion: "46556523"
  uid: 386c9503-7003-447a-94a0-4f9dcd2fa06d
spec:
  clusterIP: 10.68.169.25
  clusterIPs:
  - 10.68.169.25
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: grpc
    port: 11800
    protocol: TCP
    targetPort: 11800
  - name: rest
    port: 12800
    protocol: TCP
    targetPort: 12800
  selector:
    app: skywalking
    component: oap
    release: skywalking
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}  

C、ingress的配置文件内容
secret

~# kubectl edit secret abc.com-ssl -n skywalking

apiVersion: v1
data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUdMakNDQlJhZ0F3SUJBZ0lRQzAzRDZSSTlvbnBXZmhYTkJvNUZmakFOQmdrcWhraUc5dzBCQVFzRkFEQmcKTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCMwpkM2N1WkdsbmFXTmxjblF1WTI5dE1SOHdIUVlEVlFRREV4WkhaVzlVY25WemRDQlVURk1nVWxOQklFTkJJRWN4Ck1CNFhEVEl6TURVd016QXdNREF3TUZvWERUSTBNRFV3TWpJek5UazFPVm93R3pFWk1CY0dBMVVFQXd3UUtpNWoKZFdsM2FuSndZM1pwTG1OdmJUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUw1cQpCZzlGcWt6dmgzV1pBTmtBVHdlYmlzcStyYVV1R2hPUUM3Q1dEN3VFVE5MSU9lMFRJelZkYXhNZ1pCeDRDaHBDClk4MmY5VzhHaVlTTFBvLzkvVWNqNklKaXdsRDFGZmVrY2NyN1duWXpXUk1GSldQMFQ3c3luVTUrRDhGTHNSVTMKL0ZLVC9EVHIzY3NrQ2RJcS9XcWU5RFAzNitjSlZJbURXYTZ2QjR4T1BYT2FlT1FHTjl5cTNLZ3FWVUU2MnZDWQpRSWhyL3lDSmQ5RjRadEM5MS95dWFlUEJqckdCMzV5N25TZjVVOFhxRGkyNTZqaU5ubFpBQ2NZZHgzYjhNOFNpClFOaHpha0xhbmNPajlNZ005djNrcHFNY253OXZQT3lEVUNpZ1lxWFdHNk5Xdzh2azVWV2ZtZmFNdmFjRERPYWwKdVFCc1MxbzdKZmRzNnNIK1U0VUNBd0VBQWFPQ0F5Y3dnZ01qTUI4R0ExVWRJd1FZTUJhQUZKUlAxRjJMNUtUaQpwb0QrL2RqNUFPK2p2Z0pYTUIwR0ExVWREZ1FXQkJTdGsvaUNFV3B3aTJBWDRmMCtjLy9sc3RrQkZUQXJCZ05WCkhSRUVKREFpZ2hBcUxtTjFhWGRxY25CamRta3VZMjl0Z2c1amRXbDNhbkp3WTNacExtTnZiVEFPQmdOVkhROEIKQWY4RUJBTUNCYUF3SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQndNQ01EOEdBMVVkSHdRNApNRFl3TktBeW9EQ0dMbWgwZEhBNkx5OWpaSEF1WjJWdmRISjFjM1F1WTI5dEwwZGxiMVJ5ZFhOMFZFeFRVbE5CClEwRkhNUzVqY213d1BnWURWUjBnQkRjd05UQXpCZ1puZ1F3QkFnRXdLVEFuQmdnckJnRUZCUWNDQVJZYmFIUjAKY0RvdkwzZDNkeTVrYVdkcFkyVnlkQzVqYjIwdlExQlRNSFlHQ0NzR0FRVUZCd0VCQkdvd2FEQW1CZ2dyQmdFRgpCUWN3QVlZYWFIUjBjRG92TDNOMFlYUjFjeTVuWlc5MGNuVnpkQzVqYjIwd1BnWUlLd1lCQlFVSE1BS0dNbWgwCmRIQTZMeTlqWVdObGNuUnpMbWRsYjNSeWRYTjBMbU52YlM5SFpXOVVjblZ6ZEZSTVUxSlRRVU5CUnpFdVkzSjAKTUFrR0ExVWRFd1FDTUFBd2dnRi9CZ29yQmdFRUFkWjVBZ1FDQklJQmJ3U0NBV3NCYVFCMkFPN04wR1RWMnhyTwp4VnkzbmJUTkU2SXloMFo4dk96ZXcxRklXVVp4SDdXYkFBQUJoK01JQU1VQUFBUURBRWN3UlFJaEFON1BuOEhGClBJT0VwenV4Ky9wUS9YYW1CS1VKWHhIbER2bll1eU9FTVd6bkFpQTZHUzdDRjNWcGVzeWFwVzR1RDEzQjcrbTgKVVN3R3lBcXNGak9ORkRkNWlBQjNBSFBabm9rYlRKWjRvQ0I5UjUzbXNzWWMwRkZlY1JrcWpHdUFFSHJCZDNLMQpBQUFCaCtNSUFQOEFBQVFEQUVnd1JnSWhBTXROa3ZEams1U0E5MWtlWVVsS090ZzUvRkJZTjFNbG9KTUdSYmdNCmY2R1NBaUVBMWpETnhZa0ZXZTFQVXp3QmtBaG92M3ptaXdEZ1hPSmxVSElISXRhN3Jic0FkZ0JJc09OcjJxWkgKTkEvbGFnTDZuVERySEZJQnkxYmRMSUhadTcrck9kaUVjd0FBQVlmakNBRFNBQUFFQXdCSE1FVUNJQkxkUXRNegowdkE4SEt3bTJQamgxNmNxT2M5MmlWOFFreHRzSUVWZDdEQlpBaUVBNWdJWnlEWEs3MjV3dXFBZFhLZFA0N0JmCllrTE9hRFI4UlpCeUkvTjljY0V3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUhHK2FYTnJHL0lpRkdYbGsrczQKa3FJL1JUV1FsOXVwdnA3ejk5U3ZNamFFSEJETUJ5Z21LS1p1K0l2bjlkOWhVdnZDUTFpM2xFOE1OZkpocGh1awo2MFgwcm5pSU1ucmdETExMYURSc3pSeXVhazZvcGV4QkF6ejAzNGhBVnM3UnMzTlYzVGVpZGV6RlJmZEd2ZEVNCjk5NG1BUDV6a3A0V1BTVFpFbldBS0FBR2o4Wk4ydk9ZSENLaCtrYTFGb29oRzNGMVV0d3hWSG9Gc042L3EvKzgKa2FweXRCTGFSamxvSnZxcFRtbyt4TzRTMU9oNHJkRmdOa3JOYmVoTTU2VDJOSkF5c0p0c25WancyanRnVFhrbApaQzdyUy85RlFUT0RKbTlKYzIyN0xMTjBFbnp6SG03RERDaHBGaTI4akVYM2NiVDNaWDNxb1drSmw4VjdKWlVTCkZKRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRWpUQ0NBM1dnQXdJQkFnSVFEUWQ0S2hNL3h2bWxjcGJoTWYvUmVUQU5CZ2txaGtpRzl3MEJBUXNGQURCaApNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzCmQzY3VaR2xuYVdObGNuUXVZMjl0TVNBd0hnWURWUVFERXhkRWFXZHBRMlZ5ZENCSGJHOWlZV3dnVW05dmRDQkgKTWpBZUZ3MHhOekV4TURJeE1qSXpNemRhRncweU56RXhNREl4TWpJek16ZGFNR0F4Q3pBSkJnTlZCQVlUQWxWVApNUlV3RXdZRFZRUUtFd3hFYVdkcFEyVnlkQ0JKYm1NeEdUQVhCZ05WQkFzVEVIZDNkeTVrYVdkcFkyVnlkQzVqCmIyMHhIekFkQmdOVkJBTVRGa2RsYjFSeWRYTjBJRlJNVXlCU1UwRWdRMEVnUnpFd2dnRWlNQTBHQ1NxR1NJYjMKRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDK0YranN2aWtLeS82NUxXRXgvVE1rQ0RJdVdlZ2gxTmd3dm00UQp5SVNnUDdvVTVkNzllb3lTRzN2T2hDM3cvM2pFTXVpcG9IMWZCdHA3bTB0VHBzWWJBaGNoNFhBN3JmdUQ2d2hVCmdhamVFckxWeG9pV01Qa0MvRG5VdmJnaTc0QkptZEJpdUdIUVNkN0x3c3VYcFRFR0c5ZllYY2JUVk41U0FUWXEKRGZiZXhiWXhUTXdWSldvVmI2bHJCRWdNM2dCQnFpaUFpeTgwMHh1MU5xMDdKZENJUWtCc05wRnRaYklaaHNEUwpmemxHV1A0d0VtQlEzTzY3YytaWGtGcjJEY3JYQkV0SGFtODBHcDJTTmhvdTJVNVU3VWVzREwveGdMSzYvMGQ3CjZUbkVWTVNVVkprWjhWZVpyK0lVSWx2b0xydGpMYnF1Z2IwVDNPWVhXK0NRVTBrQkFnTUJBQUdqZ2dGQU1JSUIKUERBZEJnTlZIUTRFRmdRVWxFL1VYWXZrcE9LbWdQNzkyUGtBNzZPK0FsY3dId1lEVlIwakJCZ3dGb0FVVGlKVQpJQmlWNXVOdTVnLzYrcmtTN1FZWGp6a3dEZ1lEVlIwUEFRSC9CQVFEQWdHR01CMEdBMVVkSlFRV01CUUdDQ3NHCkFRVUZCd01CQmdnckJnRUZCUWNEQWpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1EUUdDQ3NHQVFVRkJ3RUIKQkNnd0pqQWtCZ2dyQmdFRkJRY3dBWVlZYUhSMGNEb3ZMMjlqYzNBdVpHbG5hV05sY25RdVkyOXRNRUlHQTFVZApId1E3TURrd042QTFvRE9HTVdoMGRIQTZMeTlqY213ekxtUnBaMmxqWlhKMExtTnZiUzlFYVdkcFEyVnlkRWRzCmIySmhiRkp2YjNSSE1pNWpjbXd3UFFZRFZSMGdCRFl3TkRBeUJnUlZIU0FBTUNvd0tBWUlLd1lCQlFVSEFnRVcKSEdoMGRIQnpPaTh2ZDNkM0xtUnBaMmxqWlhKMExtTnZiUzlEVUZNd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQgpBSUljQkRxQzZjV3B5R1VTWEFqakFjWXdzSzRpaUdGN0t3ZUc5N2kxUkp6MWt3WmhSb282b3JVMUp0QlluanpCCmM0Ky9zWG1uSEprM21sUHlMMXh1SUF0OXNNZUM3K3ZyZVJJRjV3RkJDME1DTjVzYkh3aE5OMUp6S2JpZk5lUDUKb3pwWmRRRm1rQ28rbmVCaUtSNkhxSUErTE1UTUNNTXV2MmtoR0d1UEhtdER6ZTRHbUVHWnRZTHlGOEVRcGE1WQpqUHVWNmsyQ3IvTjNYeEZwVDNoUnB0LzN1c1UvWmI5d2ZLUHRXcG96blo0LzQ0YzFwOXJ6RmNaWXJXa2ozQSs3ClROQkpFMEdtUDJmaFhoUDFEL1hWZklXL2gweUNKR0VpVjlHbG0vdUdPYTNEWEhsbWJBY3hTeUNScmFHK1pCa0EKN2g0U2VNNlk4bC83TUJScFBDejZsOFk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tAED
  tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdm1vR0QwV3FUTytIZFprQTJRQlBCNXVLeXI2dHBTNGFFNUFMc0pZUHU0Uk0wc2c1CjdSTWpOVjFyRXlCa0hIZ0tHa0pqelovMWJ3YUpoSXMrai8zOVJ5UG9nbUxDVVBVVjk2Unh5dnRhZGpOWkV3VWwKWS9SUHV6S2RUbjRQd1V1eEZUZjhVcFA4Tk92ZHl5UUowaXI5YXA3ME0vZnI1d2xVaVlOWnJxOEhqRTQ5YzVwNAo1QVkzM0tyY3FDcFZRVHJhOEpoQWlHdi9JSWwzMFhobTBMM1gvSzVwNDhHT3NZSGZuTHVkSi9sVHhlb09MYm5xCk9JMmVWa0FKeGgzSGR2d3p4S0pBMkhOcVF0cWR3NlAweUF6Mi9lU21veHlmRDI4ODdJTlFLS0JpcGRZYm8xYkQKeStUbFZaK1o5b3k5cHdNTTVxVzVBR3hMV2pzbDkyenF3ZjVUaFFJREFRQUJBb0lCQUJkb0FRYXZrWmVUZWh0QwppNUFoTVpYRjBQSExMcDAzWlkweUQ3M05OSEhnZVhFUG04OUFvdnRVV0cwcGRpVHB2SlF0eFFicHVzbkRDL1IzCkNXRzUzd0Izc1lVVmpyMVU0elpseUhjakhxT1kvRUlTUjk1WmtkTjVEVTB3d2M4STl1T2MxaTl3Y1hndjVqdXEKV21xelRpTmxGcStzc2hyY1VyLzBuWG1UbW1Ic3BYRW1meDF6TVc3YVA5TDJNT01xazRVamJDblNVZ1c4QnJ6SAo2dlMyLzFpWG5rdEJWK0pvV2ZhYUpmNFljM21RT3J0SFB1R3hCbEhCMk5ISkcxQitQeWN2ckVyLzFhOE10RzlUCjFINlg2aGxmY0hpUUZCRmdpa25mWTJ6Zk5HcElORGpaejFPK2VSRjRpdlphb0ozR3ZtY2RVUldjbHpibmlSQXcKcFJyb2pnRUNnWUVBKzlGK0FqcXVaWnp5T1o5ZWNZYlJwVXd5TWNiNXYwZ2hhdjNoQWdYOXhaclA4dUtCejFqTApBdUcrQVRlL3BDVE1sTVlzL3Rabk1pMVR3Z2Rld2dEM3VqR2plRmZ3TFdINnVWb0kzR3JxbFhscjVGSWYwVjlRCjJYRG5LdXdVOWh6eFpycG52K2xOS01QVWMwdGh1ZjlJVU9LL2Q4LzA3V0lhTDg3OE4yRmUyOUVDZ1lFQXdaTisKMXFHa29hQzNhR1huZWk3ODlBLzNyMEdmSDgvVE1HUkpHaWgrM01FOERhcVNSUEtDbTY3cFlUU28vQlh3VnpvOApoR1R6RWRLOHFMM3NIRW85OEtHRjZ2MjJVSDBrN2ZIY0RkMGZEZGFKT1l1eDZsNWVGTm9nYlF1bWxhdlVPdG0rCk12NWZacVVRS0h1MGxJeExRTWxQZnQ4d2lsakZzb3RIR0RDbVRYVUNnWUVBa1BzWU5XaGJxQjBvU0l5ODcxZlQKcy91ZW1wSVlrRXlURU9xQ2RZdkZnOU9TRGlEaTQrSVhYOTFnYTRzUlJ3djR6VjhiNE16SU5WZHJkYmFRazluQwp4dXgxVllBcnc3VTVpU1dSSEhaaUFSVWJUU1VMTkp4UURDQzR0em1kQitXNkJvOGoxSllaMm5LRkNxeEg0N0phCmpGZEFMVmNKaVBLR2FTZ2VoalFGVFVFQ2dZQktYam9LaDB0U2RRWkJhM1VFc2V5b2IwSCs2TDBUWWFxSEd1QWkKMW8vMmk1NWd1Yms4RjljcHJJY291eXg0dkl6N1ZmcE4rdUtQWkdEcWl4eWN1Y0VXSTFmcHNkTkxGT2tOS1RBYgplMm9rek5rbmJJM0x0cmw2VlZyRHlnZ1QxRkhTMGppS0tzUElFWDRscjNEdTZQODRRcDd4NVJrbTdYZjJZaC9NCklWU2l5UUtCZ0JiK0plU0lFRmM1czRyRklaYnN0eENCK1dqdk1PczR0RW5NNkp3WXh4TkJmYUdQQUtMWmNCNDMKWTVQblNoT2w0T21RYnZ5RWdHK1o4RFcrN0J2cVVjVE92SGlhb2YzTzZPUjBQdmV4Y3Z0Sldha3RHRVlPT0g2bQpGTWZmZ3QvUkEraUFQay91QllCZVNLWHNGNDhCY3Nsck15TU9rUThpaU02OTQ1WEIxaE5RCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tAVse
immutable: false
kind: Secret
metadata:
  creationTimestamp: "2023-12-21T14:30:06Z"
  name: abc.com-ssl
  namespace: skywalking
  resourceVersion: "46095322"
~# kubectl edit ingress skywalking-ui -n skywalking

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  creationTimestamp: "2023-12-22T11:51:21Z"
  generation: 3
  labels:
    app: skywalking
    app.kubernetes.io/managed-by: Helm
    chart: skywalking-4.3.0
    component: ui
    heritage: Helm
    k8s.kuboard.cn/name: skywalking-ui
    release: skywalking
  name: skywalking-ui
  namespace: skywalking
  resourceVersion: "46541768"
  uid: 9331ed1a-40e0-4fb2-b6a5-370207fb196b
spec:
  ingressClassName: biking-ingress
  rules:
  - host: skywalking-oap-test.abc.com
    http:
      paths:
      - backend:
          service:
            name: skywalking-skywalking-helm-ui
            port:
              number: 80
        path: /
        pathType: Prefix
  tls:
  - hosts:
    - skywalking-oap-test.abc.com
    secretName: abc.com-ssl
status:
  loadBalancer:
    ingress:
    - ip: 172.16.10.202
    - ip: 172.16.10.203

D、查看elasticsearch的配置内容
StatefulSet

~# kubectl edit StatefulSet elasticsearch-master -n skywalking

apiVersion: apps/v1
kind: StatefulSet
metadata:
  annotations:
    esMajorVersion: "7"
    meta.helm.sh/release-name: skywalking
    meta.helm.sh/release-namespace: skywalking
  creationTimestamp: "2023-12-23T19:18:33Z"
  generation: 1
  labels:
    app: elasticsearch-master
    app.kubernetes.io/managed-by: Helm
    chart: elasticsearch
    heritage: Helm
    release: skywalking
  name: elasticsearch-master
  namespace: skywalking
  resourceVersion: "46556881"
  uid: 6181350e-d165-43b6-b1df-e2473b928f47
spec:
  persistentVolumeClaimRetentionPolicy:
    whenDeleted: Retain
    whenScaled: Retain
  podManagementPolicy: Parallel
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: elasticsearch-master
  serviceName: elasticsearch-master-headless
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: elasticsearch-master
        chart: elasticsearch
        release: skywalking
      name: elasticsearch-master
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - elasticsearch-master
            topologyKey: kubernetes.io/hostname
      automountServiceAccountToken: true
      containers:
      - env:
        - name: node.name
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: cluster.initial_master_nodes
          value: elasticsearch-master-0,elasticsearch-master-1,elasticsearch-master-2,
        - name: discovery.seed_hosts
          value: elasticsearch-master-headless
        - name: cluster.name
          value: elasticsearch
        - name: network.host
          value: 0.0.0.0
        - name: cluster.deprecation_indexing.enabled
          value: "false"
        - name: ES_JAVA_OPTS
          value: -Xmx1g -Xms1g
        - name: node.data
          value: "true"
        - name: node.ingest
          value: "true"
        - name: node.master
          value: "true"
        - name: node.ml
          value: "true"
        - name: node.remote_cluster_client
          value: "true"
        image: docker.elastic.co/elasticsearch/elasticsearch:7.17.3
        imagePullPolicy: IfNotPresent
        name: elasticsearch
        ports:
        - containerPort: 9200
          name: http 
          protocol: TCP
        - containerPort: 9300
          name: transport
          protocol: TCP
        readinessProbe:
          exec:
            command:
            - bash
            - -c
            - |
              set -e
              # If the node is starting up wait for the cluster to be ready (request params: "wait_for_status=green&timeout=1s" )
              # Once it has started only check that the node itself is responding
              START_FILE=/tmp/.es_start_file

              # Disable nss cache to avoid filling dentry cache when calling curl
              # This is required with Elasticsearch Docker using nss < 3.52
              export NSS_SDB_USE_CACHE=no

              http () {
                local path="${1}"
                local args="${2}"
                set -- -XGET -s

                if [ "$args" != "" ]; then
                  set -- "$@" $args
                fi

                if [ -n "${ELASTIC_PASSWORD}" ]; then
                  set -- "$@" -u "elastic:${ELASTIC_PASSWORD}"
                fi

                curl --output /dev/null -k "$@" "http://127.0.0.1:9200${path}"
              }

              if [ -f "${START_FILE}" ]; then
                echo 'Elasticsearch is already running, lets check the node is healthy'
                HTTP_CODE=$(http "/" "-w %{http_code}")
                RC=$?
                if [[ ${RC} -ne 0 ]]; then
                  echo "curl --output /dev/null -k -XGET -s -w '%{http_code}' \${BASIC_AUTH} http://127.0.0.1:9200/ failed with RC ${RC}"
                  exit ${RC}
                fi
                # ready if HTTP code 200, 503 is tolerable if ES version is 6.x
                if [[ ${HTTP_CODE} == "200" ]]; then
                  exit 0
                elif [[ ${HTTP_CODE} == "503" && "7" == "6" ]]; then
                  exit 0
                else
                  echo "curl --output /dev/null -k -XGET -s -w '%{http_code}' \${BASIC_AUTH} http://127.0.0.1:9200/ failed with HTTP code ${HTTP_CODE}"
                  exit 1
                fi

              else
                echo 'Waiting for elasticsearch cluster to become ready (request params: "wait_for_status=green&timeout=1s" )'
                if http "/_cluster/health?wait_for_status=green&timeout=1s" "--fail" ; then
                  touch ${START_FILE}
                  exit 0
                else
                  echo 'Cluster is not yet ready (request params: "wait_for_status=green&timeout=1s" )'
                  exit 1
                fi
              fi
          failureThreshold: 3
          initialDelaySeconds: 10
          periodSeconds: 10
          successThreshold: 3
          timeoutSeconds: 5
        resources:
          limits:
            cpu: "1"
            memory: 2Gi
          requests:
            cpu: 100m
            memory: 2Gi
        securityContext:
          capabilities:
            drop:
            - ALL
          runAsNonRoot: true
          runAsUser: 1000
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      enableServiceLinks: true
      initContainers:
      - command:
        - sysctl
        - -w    
        - vm.max_map_count=262144
        image: docker.elastic.co/elasticsearch/elasticsearch:7.17.3
        imagePullPolicy: IfNotPresent
        name: configure-sysctl
        resources: {}
        securityContext:
          privileged: true
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        fsGroup: 1000
        runAsUser: 1000
      terminationGracePeriodSeconds: 120
  updateStrategy:
    type: RollingUpdate   

service

~# kubectl edit service elasticsearch-master -n skywalking

apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: skywalking
    meta.helm.sh/release-namespace: skywalking
  creationTimestamp: "2023-12-23T19:18:33Z"
  labels:
    app: elasticsearch-master
    app.kubernetes.io/managed-by: Helm
    chart: elasticsearch
    heritage: Helm
    release: skywalking
  name: elasticsearch-master
  namespace: skywalking
  resourceVersion: "46556527"
  uid: 7e6f70f2-de8f-46e6-8b2d-0421e32ec4f7
spec:
  clusterIP: 10.68.47.138
  clusterIPs:
  - 10.68.47.138
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: http
    port: 9200
    protocol: TCP
    targetPort: 9200
  - name: transport
    port: 9300
    protocol: TCP
    targetPort: 9300
  selector:
    app: elasticsearch-master
    chart: elasticsearch
    release: skywalking
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}  

检测脚本:

bash -c 'set -e
# If the node is starting up wait for the cluster to be ready (request params: "wait_for_status=green&timeout=1s" )
# Once it has started only check that the node itself is responding
START_FILE=/tmp/.es_start_file

# Disable nss cache to avoid filling dentry cache when calling curl
# This is required with Elasticsearch Docker using nss < 3.52
export NSS_SDB_USE_CACHE=no

http () {
  local path="${1}"
  local args="${2}"
  set -- -XGET -s

  if [ "$args" != "" ]; then
    set -- "$@" $args
  fi

  if [ -n "${ELASTIC_PASSWORD}" ]; then
    set -- "$@" -u "elastic:${ELASTIC_PASSWORD}"
  fi

  curl --output /dev/null -k "$@" "http://127.0.0.1:9200${path}"
}

if [ -f "${START_FILE}" ]; then
  echo 'Elasticsearch is already running, lets check the node is healthy'
  HTTP_CODE=$(http "/" "-w %{http_code}")
  RC=$?
  if [[ ${RC} -ne 0 ]]; then
    echo "curl --output /dev/null -k -XGET -s -w '%{http_code}' \${BASIC_AUTH} http://127.0.0.1:9200/ failed with RC ${RC}"
    exit ${RC}
  fi
  # ready if HTTP code 200, 503 is tolerable if ES version is 6.x
  if [[ ${HTTP_CODE} == "200" ]]; then
    exit 0
  elif [[ ${HTTP_CODE} == "503" && "7" == "6" ]]; then
    exit 0
  else
    echo "curl --output /dev/null -k -XGET -s -w '%{http_code}' \${BASIC_AUTH} http://127.0.0.1:9200/ failed with HTTP code ${HTTP_CODE}"
    exit 1
  fi

else
  echo 'Waiting for elasticsearch cluster to become ready (request params: "wait_for_status=green&timeout=1s" )'
  if http "/_cluster/health?wait_for_status=green&timeout=1s" "--fail" ; then
    touch ${START_FILE}
    exit 0
  else
    echo 'Cluster is not yet ready (request params: "wait_for_status=green&timeout=1s" )'
    exit 1
  fi
fi
'

4、添加客户端agent
下载apache-skywalking-apm-es7后,解压文件,将解压目录下的agent目录,存放到nfs下,然后挂载到java对应的pod服务,并将对应的文件加目录挂载到pods的/usr/skywalking/agent/下
8.7.0版本

wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7-8.7.0.tar.gz
tar -xf apache-skywalking-apm-es7-8.7.0.tar.gz
mv apache-skywalking-apm-es7-8.70/agent/* /data/nfs/skywalking-agent/

9.1.0版本

wget https://archive.apache.org/dist/skywalking/java-agent/9.1.0/apache-skywalking-java-agent-9.1.0.tgz
tar -xf apache-skywalking-java-agent-9.1.0.tgz
mv skywalking-agent/* /data/nfs/

启动一个pods
deployment文本内容

~# kubectl edit deployment financial-management -n test

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "9"
    k8s.kuboard.cn/displayName: financial-management
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{"k8s.kuboard.cn/displayName":"financial-management"},"labels":{"k8s.kuboard.cn/layer":"platform","k8s.kuboard.cn/name":"financial-management"},"name":"financial-management","namespace":"biking"},"spec":{"progressDeadlineSeconds":600,"replicas":1,"revisionHistoryLimit":10,"selector":{"matchLabels":{"k8s.kuboard.cn/name":"financial-management"}},"strategy":{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"},"template":{"metadata":{"labels":{"k8s.kuboard.cn/name":"financial-management"}},"spec":{"containers":[{"env":[{"name":"TZ","value":"Asia/Shanghai"},{"name":"NACOS","value":"172.16.10.20"}],"image":"harbor.cuiwjrpcvi.com/bktest/financial-management:test","imagePullPolicy":"Always","name":"financial-management","ports":[{"containerPort":8081,"name":"msag7","protocol":"TCP"}],"resources":{},"terminationMessagePath":"/test/termination-log","terminationMessagePolicy":"File"}],"dnsPolicy":"ClusterFirst","hostAliases":[{"hostnames":["rocketmq","kafka","redis"],"ip":"172.16.10.20"}],"imagePullSecrets":[{"name":"harbor-secret"}],"restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{},"terminationGracePeriodSeconds":30}}}}
  creationTimestamp: "2023-06-27T08:19:05Z"
  generation: 11
  labels:
    k8s.kuboard.cn/layer: platform
    k8s.kuboard.cn/name: financial-management
  name: financial-management
  namespace: test
  resourceVersion: "46557189"
  uid: 89bc052f-e343-489d-bef9-caa7585c8d1e
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s.kuboard.cn/name: financial-management
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/restartedAt: "2023-12-23T23:21:18+04:00"
      creationTimestamp: null
      labels:
        k8s.kuboard.cn/name: financial-management
    spec:
      containers:
      - env:
        - name: TZ
          value: Asia/Shanghai
        - name: NACOS
          value: 172.16.10.20
        - name: BUILD_TAG
          value: ${BUILD_TAG}
        - name: NAMESPACE
          value: test
        - name: JAVA_TOOL_OPTIONS
          value: -javaagent:/usr/skywalking/agent/skywalking-agent.jar
        - name: SW_AGENT_NAME
          value: financial-management
        - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
          value: skywalking-skywalking-helm-oap.skywalking.svc.cluster.local:11800
        - name: SW_AGENT_FORCE_TLS
          value: "true"
        image: harbor.cuiwjrpcvi.com/bktest/financial-management:test
        imagePullPolicy: Always
        name: financial-management
        ports:
        - containerPort: 8081
          name: msag7
          protocol: TCP
        resources: {}
        terminationMessagePath: /test/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /usr/skywalking/agent/
          name: volume-2bhb2
          subPath: skywalking-agent
      dnsPolicy: ClusterFirst
      hostAliases:
      - hostnames:
        - rocketmq
        - kafka
        - redis
        ip: 172.16.10.20
      imagePullSecrets:
      - name: harbor-secret
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: volume-2bhb2
        nfs:
          path: /data/nfs
          server: 172.16.10.20       

service文本内容

~# kubectl edit svc financial-management -n test

apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/instance":"financial-management","k8s.kuboard.cn/name":"financial-management"},"name":"financial-management","namespace":"biking"},"spec":{"ports":[{"name":"kjmfca","port":8081,"protocol":"TCP","targetPort":8081}],"selector":{"k8s.kuboard.cn/name":"financial-management"},"sessionAffinity":"None","type":"ClusterIP"}}
  creationTimestamp: "2023-06-27T08:19:05Z"
  labels:
    app.kubernetes.io/instance: financial-management
    k8s.kuboard.cn/name: financial-management
  name: financial-management
  namespace: test
  resourceVersion: "5855"
  uid: 4620bbc0-f8bd-48d9-8ad6-41a69939c31d
spec:
  clusterIP: 10.68.140.221
  clusterIPs:
  - 10.68.140.221
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: kjmfca
    port: 8081
    protocol: TCP
    targetPort: 8081
  selector:
    k8s.kuboard.cn/name: financial-management
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

依次类推部署其他的pod

5、登录ui控制台
https://skywalking-oap-test.abc.com/General-Service/Services
service图形入下
在这里插入图片描述
Topology图形如下
在这里插入图片描述
查看实例的图形
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/272560.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能监测/检测系统EasyCVR国标接入无法播放是什么原因?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

acwing linux docker教程

终章 听着名字还挺伤感的哈哈哈其实是Linux的终章&#xff0c;感谢大家这段时间的阅读&#xff0c;这段使时间我为了给大家清楚的讲解一下Linux自己也是很认真的学习了一遍&#xff0c;自己提升了也不少。其实最近学校里面是讲了Linux和windows server 2019搭载DNS、web、ftp服…

YOLOv5改进 | 主干篇 | ShuffleNetV2轻量化网络助力FPS提高(附代码+修改教程)

一、本文内容 本文给大家带来的改进内容是ShuffleNetV2&#xff0c;这是一种为移动设备设计的高效CNN架构。其在ShuffleNetV1的基础上强调除了FLOPs之外&#xff0c;还应考虑速度、内存访问成本和平台特性。(我在YOLOv5n上修改该主干降低了GFLOPs,但是参数量还是有一定上涨&am…

『JavaScript』全面掌握JavaScript数组的操作、方法与高级技巧

&#x1f4e3;读完这篇文章里你能收获到 学习JavaScript中数组的基本操作掌握JavaScript数组的多种内置方法了解JavaScript中的数组扩展运算符、Array.from()和Array.of()等实用技巧熟悉如何在JavaScript中使用数组方法进行数据处理 文章目录 一、基本操作1. 创建数组2. 访问和…

【Spring实战】07 JPA

文章目录 1. 定义2. 出现原因3. 添加依赖4. 使用1&#xff09;创建 Repository 接口2&#xff09;自定义查询方法&#xff08;非必须&#xff09;3&#xff09;创建实体类4&#xff09;调用方法 5. 验证6. 优点7. 缺点8. 详细代码总结 1. 定义 Spring Data JPA 是 Spring 提供…

IP 地址归属地查询

IP 地址归属地查询 1. IP 地址归属地查询2. IP 地址归属地查询References 1. IP 地址归属地查询 https://tool.lu/ip/index.html 2. IP 地址归属地查询 https://www.ip.cn/ip/.html References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 在最新的 OpenAI 官方 APIs 文档中&#xff0c;Create chat completion 中新增了 top_logprobs 和 logprobs 这两个关键参数。 官方文档地址&#xff…

掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装

文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置 二、可视化工具Kibana1.介绍2.安…

MuJava提供的方法级别的7类变异算子总结

MuJava简洁 Java (muJava) 是 Java 程序的变异系统。 它自动生成用于传统突变测试和类级别突变测试的突变体。 Java 可以测试单个类和多个类的包。 用户以对封装在单独 JUnit 类的方法中的被测类的方法调用序列的形式提供测试。 官网地址&#xff1a;Java Home Page 归档表格…

计算机网络面试题目

概述&#xff1a; 1、协议和服务之间的区别&#xff08;协议是水平的&#xff0c;服务是垂直的&#xff09; 2、计算机网络有那些层 应用层通过主机中进程的交互完成特定的网络应用。运输层提供两台主机间的进程之间的通信。网络层对传输层传下来的数据包封装&#xff0c;通过路…

使用 GPT4V+AI Agent 做自动 UI 测试的探索

一、背景 从 Web 诞生之日起&#xff0c;UI 自动化就成了测试的难点&#xff0c;到现在近 30 年&#xff0c;一直没有有效的手段解决Web UI测试的问题&#xff0c;尽管发展了很多的 webdriver 驱动&#xff0c;图片 diff 驱动的工具&#xff0c;但是这些工具的投入产出比一直被…

VMware虚拟机的安装配置

目录 一. VMware虚拟机的安装 二. VMware配置虚拟机 三. VMware安装windows server 2012 一. VMware虚拟机的安装 1. 双击安装&#xff0c;点击下一步 2. 勾选接受许可&#xff0c;点击下一步 3. 选择安装位置&#xff0c;点击下一步 4. 用户体验设置&#xff08;可选&#…

【三维目标检测】【自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)

系列文章目录 论文&#xff1a;Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址&#xff1a;https://arxiv.org/pdf/2312.08004.pdf 来源&#xff1a;复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…

张江智荟毁约offer

毕业8年后&#xff0c;找工作被国企歧视学历&#xff01;已经收到了offer&#xff0c;在入职前一周被通知要撤回offer&#xff0c;拒绝录用&#xff0c;理由居然是他们只要本科211以上的人 这是我今天&#xff08;2023-12-26&#xff09;亲身经历的事&#xff0c;听说过面试前…

string类的函数讲解

标准库中的string类 首先关于string类的了解&#xff0c;我先给出官方的string类的讲解&#xff0c;以便于大家的学习&#xff1a;链接: http://www.cplusplus.com/reference/string/string/?kwstring 这个网站是C官方网站&#xff0c;里面对于各个关键字和库函数的讲解都是很…

鸿蒙开发中的一些小问题

这是我在学习鸿蒙开发中遇见的小问题 Q1&#xff1a;This custom component must have a build function. <etsLint>Q2&#xff1a;page_title is not translated into en_US(American English)Q3&#xff1a;Module "../CustomComponent/CustomButton" declar…

【论文解读】Learning based fast H.264 to H.265 transcoding

时间&#xff1a; 2015 年 级别&#xff1a; APSIPA 机构&#xff1a; 上海电力大学 摘要 新提出的视频编码标准HEVC (High Efficiency video coding)以其比H.264/AVC更好的编码效率&#xff0c;被工业界和学术界广泛接受和采用。在HEVC实现了约40%的编码效率提升的同时&…

CP2102 驱动安装指南

现在的电脑上已经很少有串口了&#xff0c;在嵌入式开发中经常使用 USB 转串口芯片作为电脑与嵌入式板卡通信的桥梁&#xff0c;CP2102 是一款常见的高端 USB 转串口芯片&#xff0c;要在电脑上使用该芯片功能需要安装驱动程序。 驱动下载 从 官网下载&#xff1a; 驱动安装 安…

HTML5+CSS3+JS小实例:网页手电筒

实例:网页手电筒 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><m…

DBAPI个人版如何升级到企业版

安装好企业版软件&#xff0c;并启动 注意要新建mysql数据库&#xff0c;执行新版本的ddl_mysql.sql脚本 在旧版本系统中分别导出数据源、分组、API&#xff0c;得到3个json文件 注意全选所有的数据导出 在新版本系统中导入数据源 在新版本系统中导入分组 进入分组管理菜单&…