• [技术干货] 产品设计中的体贴性原则
    产品设计中的体贴性原则,是指在设计产品时,应充分考虑并满足用户的感受、需求和习惯,使产品能够像人一样体贴用户,给予用户支持和帮助。以下是对产品设计中的体贴性原则的详细阐述:一、定义与重要性体贴性原则强调在设计产品时,要站在用户的角度思考问题,理解用户的喜怒哀乐,进而采取适当的行动来给予支持、帮助或安慰。这种设计原则的重要性在于,它能够增强用户对产品的满意度和忠诚度,提高产品的市场竞争力。二、具体表现关心用户喜好:产品应能够记住用户的行为和偏好,如用户经常访问的网站、常用的功能等,并根据这些信息为用户提供个性化的服务和推荐。通过个性化算法技术手段,降低用户操作的复杂度和选择的迟疑度,让用户感受到平台的推荐内容是为他们私人定制的。恭顺与尊重:产品应尊重用户的选择和决定,不随意判断或限制用户的行为。当用户坚持自己的行为时,产品可以告知用户可能存在的风险,但不应自行限制用户的行为。乐于助人:产品应能够主动提供帮助和支持,如提供使用教程、常见问题解答等。在用户需要帮助时,产品应能够给出超出用户期待的更优方案。具有判断力:产品应能够判断用户的行为是否安全,如检测账户是否在陌生设备或地址上登录,并及时提醒用户。产品还应能够帮助用户保护个人隐私数据,如选择安全的密码、及时报告不当的操作等。预见需求:产品应能够预测用户下一步的需求,并提前做好准备。如在浏览网页时,产品可以预测用户可能点击的链接,并提前下载相关内容,以减少用户的等待时间。尽责与可靠:产品应能够稳定地运行,不出现过多的错误或故障。当产品出现问题时,应能够及时通知用户,并提供解决方案或备选方案。不会增加用户负担:产品应尽可能减少不必要的通知和干扰,如避免过多的弹窗、广告等。产品还应能够自主解决自己的问题,如自动修复错误、自动更新等,以减少用户的操作负担。及时通知:产品应能够及时通知用户所关心的事情,如支付情况、订单状态等。通知应简洁明了,避免过多的冗余信息。自信与稳健:产品应能够坚定自己的信念,不轻易怀疑用户或自己。如在删除文件时,产品可以默认不弹出二次确认框,以提高用户的操作效率。但同时,产品也应提供恢复已删除文件的功能,以防止用户误操作。避免用户犯低级错误:产品应能够通过细致的视觉和文字反馈,提醒用户避免犯低级错误。如在发送信息时,如果用户不小心选择了全部朋友,产品应能够提醒用户并给出确认选项。三、实践应用体贴性原则在产品设计中的应用非常广泛,如浏览器可以记住用户定期登录网站的相关信息,购物网站可以保存用户的收货地址并在下次购物时自动带入,社交媒体可以提醒用户及时查看未读消息等。这些设计都充分考虑了用户的需求和习惯,提高了产品的可用性和用户体验。四、总结与展望体贴性原则是产品设计中的重要原则之一。通过遵循这一原则,设计师可以创造出更加人性化、个性化的产品,提高用户的满意度和忠诚度。未来,随着科技的不断发展和用户需求的不断变化,体贴性原则将在产品设计中发挥更加重要的作用。设计师应不断学习和探索体贴性原则的新方法和新技术,以创造出更加优秀的产品。大家有什么想法可以一起讨论哈~
  • apv
    PV静态供给明显的缺点是维护成本太高了! 因此,K8s开始支持PV动态供给,使用StorageClass对象实现。但是查询官方的文档,默认是不支持NFS存储的。这样就需要安装一个插件的方式,使用NFS的PV动态存储。[root@k8s-node2 nfs-client]# vi class.yamlapiVersion: storage.k8s.io/v1kind: StorageClassmetadata:  name: managed-nfs-storageprovisioner: fuseim.pri/ifs # or choose another name, must match deployment's env PROVISIONER_NAME'parameters:  archiveOnDelete: "true"[root@k8s-node2 nfs-client]# vi deployment.yamlapiVersion: v1kind: ServiceAccountmetadata:  name: nfs-client-provisioner---kind: DeploymentapiVersion: apps/v1metadata:  name: nfs-client-provisionerspec:  replicas: 1  strategy:    type: Recreate  selector:    matchLabels:      app: nfs-client-provisioner  template:    metadata:      labels:        app: nfs-client-provisioner    spec:      serviceAccountName: nfs-client-provisioner containers:        - name: nfs-client-provisioner          image: quay.io/external_storage/nfs-client-provisioner:latest          volumeMounts:            - name: nfs-client-root              mountPath: /persistentvolumes          env:            - name: PROVISIONER_NAME              value: fuseim.pri/ifs            - name: NFS_SERVER              value: 192.168.0.21//NFS服务器地址            - name: NFS_PATH              value: /ifs/kubernetes//NFS目录      volumes:        - name: nfs-client-root          nfs:            server: 192.168.0.21            path: /ifs/kubernetes[root@k8s-node2 nfs-client]# vi rbac.yamlkind: ServiceAccountapiVersion: v1metadata:  name: nfs-client-provisioner---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: nfs-client-provisioner-runnerrules:  - apiGroups: [""]    resources: ["persistentvolumes"]    verbs: ["get", "list", "watch", "create", "delete"]  - apiGroups: [""]    resources: ["persistentvolumeclaims"]    verbs: ["get", "list", "watch", "update"]  - apiGroups: ["storage.k8s.io"]    resources: ["storageclasses"]    verbs: ["get", "list", "watch"]  - apiGroups: [""]    resources: ["events"]    verbs: ["create", "update", "patch"]---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: run-nfs-client-provisionersubjects:  - kind: ServiceAccount    name: nfs-client-provisioner    namespace: defaultroleRef:  kind: ClusterRole  name: nfs-client-provisioner-runner  apiGroup: rbac.authorization.k8s.io---kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: leader-locking-nfs-client-provisionerrules:  - apiGroups: [""]    resources: ["endpoints"]    verbs: ["get", "list", "watch", "create", "update", "patch"]---kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: leader-locking-nfs-client-provisionersubjects:  - kind: ServiceAccount    name: nfs-client-provisioner    # replace with namespace where provisioner is deployed    namespace: defaultroleRef:  kind: Role  name: leader-locking-nfs-client-provisioner  apiGroup: rbac.authorization.k8s.io直接应用yaml:kubectl apply -f .[root@k8s-node2 ~]# kubectl get podNAME                                      READY   STATUS    RESTARTS   AGEdns-test                                  1/1     Running   0          83mnfs-client-provisioner-78c97f97c6-ndtsd   1/1     Running   0          11m---apiVersion: v1kind: PersistentVolumemetadata: name: pv-wp labels: name: pv-wpspec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: /wp---apiVersion: apps/v1kind: Deploymentmetadata: labels: app: chartmuseum name: chartmuseum namespace: chartmuseumspec: replicas: 1 selector: matchLabels: app: chartmuseum template: metadata: labels: app: chartmuseum spec: containers: - image: chartmuseum/chartmuseum:latest imagePullPolicy: IfNotPresent name: chartmuseum ports: - containerPort: 8080 protocol: TCP env: - name: DEBUG value: "1" - name: STORAGE value: local - name: STORAGE_LOCAL_ROOTDIR value: /charts volumeMounts: - mountPath: /charts name: charts-volume volumes: - name: charts-volume hostPath: path: /data/charts type: Directory---apiVersion: v1kind: Servicemetadata: name: chartmuseum namespace: chartmuseumspec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: app: chartmuseum使用k8s-allinone镜像启动云端主机环境后。等待一段时间,集群初始化完毕后,检查k8s集群状态并查看主机名,命令如下:```javascript[root@master ~]# kubectl get nodes,pod -ANAME STATUS ROLES AGE VERSIONnode/master Ready control-plane,master 5m14s v1.22.1NAMESPACE NAME READY STATUS RESTARTS AGEkube-dashboard pod/dashboard-7575cf67b7-5s5hz 1/1 Running 0 4m51skube-dashboard pod/dashboard-agent-69456b7f56-nzghp 1/1 Running 0 4m50skube-system pod/coredns-78fcd69978-klknx 1/1 Running 0 4m58skube-system pod/coredns-78fcd69978-xwzgr 1/1 Running 0 4m58skube-system pod/etcd-master 1/1 Running 0 5m14skube-system pod/kube-apiserver-master 1/1 Running 0 5m11skube-system pod/kube-controller-manager-master 1/1 Running 0 5m13skube-system pod/kube-flannel-ds-9gdnl 1/1 Running 0 4m51skube-system pod/kube-proxy-r7gq9 1/1 Running 0 4m58skube-system pod/kube-scheduler-master 1/1 Running 0 5m11skube-system pod/metrics-server-77564bc84d-tlrp7 1/1 Running 0 4m50s```由上面的执行结果可以看出集群和Pod状态都是正常的。查看当前节点主机名:```javascript[root@master ~]# hostnamectl Static hostname: master Icon name: computer-vm Chassis: vm Machine ID: cc2c86fe566741e6a2ff6d399c5d5daa Boot ID: 94e196b737b6430bac5fbc0af88cbcd1 Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 Architecture: x86-64```修改边端节点的主机名,命令如下:```javascript[root@localhost ~]# hostnamectl set-hostname kubeedge-node[root@kubeedge-node ~]# hostnamectl Static hostname: kubeedge-node Icon name: computer-vm Chassis: vm Machine ID: cc2c86fe566741e6a2ff6d399c5d5daa Boot ID: c788c13979e0404eb5afcd9b7bc8fd4b Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 Architecture: x86-64```分别配置云端节点和边端节点的主机映射文件,命令如下:```javascript[root@master ~]# cat >> /etc/hosts <<EOF10.26.17.135 master10.26.7.126 kubeedge-nodeEOF[root@kubeedge-node ~]# cat >> /etc/hosts <<EOF10.26.17.135 master10.26.7.126 kubeedge-nodeEOF```(2)云端、边端节点配置Yum源下载安装包kubernetes_kubeedge.tar.gz至云端master节点/root目录,并解压到/opt目录,命令如下:```javascript[root@master ~]# curl -O http://mirrors.douxuedu.com/KubeEdge/kubernetes_kubeedge_allinone.tar.gz[root@master ~]# tar -zxvf kubernetes_kubeedge_allinone.tar.gz -C /opt/[root@master ~]# ls docker-compose-Linux-x86_64 harbor-offline-installer-v2.5.0.tgz kubeedge kubernetes_kubeedge.tar.gzec-dashboard-sa.yaml k8simage kubeedge-counter-demo yum```在云端master节点配置yum源,命令如下:```javascript[root@master ~]# mv /etc/yum.repos.d/* /media/[root@master ~]# cat > /etc/yum.repos.d/local.repo <<EOF[docker]name=dockerbaseurl=file:///opt/yumgpgcheck=0enabled=1EOF[root@master ~]# yum -y install vsftpd[root@master ~]# echo anon_root=/opt >> /etc/vsftpd/vsftpd.conf```开启服务,并设置开机自启:```javascript[root@master ~]# systemctl enable vsftpd --now```边端kubeedge-node配置yum源,命令如下:```javascript[root@kubeedge-node ~]# mv /etc/yum.repos.d/* /media/[root@kubeedge-node ~]# cat >/etc/yum.repos.d/ftp.repo <<EOF[docker]name=dockerbaseurl=ftp://master/yumgpgcheck=0enabled=1EOF```(3)云端、边端配置Docker云端master节点已经安装好了Docker服务,需要配置本地镜像拉取,命令如下:```javascript[root@master ~]# vi /etc/docker/daemon.json { "log-driver": "json-file", "log-opts": { "max-size": "200m", "max-file": "5" }, "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 655360, "Soft": 655360 }, "nproc": { "Name": "nproc", "Hard": 655360, "Soft": 655360 } }, "live-restore": true, "oom-score-adjust": -1000, "max-concurrent-downloads": 10, "max-concurrent-uploads": 10, "insecure-registries": ["0.0.0.0/0"]}[root@master ~]# systemctl daemon-reload [root@master ~]# systemctl restart docker```边端节点安装Docker,并配置本地镜像拉取,命令如下:```javascript[root@kubeedge-node ~]# yum -y install docker-ce[root@kubeedge-node ~]# vi /etc/docker/daemon.json{ "log-driver": "json-file", "log-opts": { "max-size": "200m", "max-file": "5" }, "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 655360, "Soft": 655360 }, "nproc": { "Name": "nproc", "Hard": 655360, "Soft": 655360 } }, "live-restore": true, "oom-score-adjust": -1000, "max-concurrent-downloads": 10, "max-concurrent-uploads": 10, "insecure-registries": ["0.0.0.0/0"]}[root@kubeedge-node ~]# systemctl daemon-reload [root@kubeedge-node ~]# systemctl enable docker --now```(4)云端节点部署Harbor仓库在云端master节点上部署Harbor本地镜像仓库,命令如下:```javascript[root@master ~]# cd /opt/[root@master opt]# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose[root@master opt]# tar -zxvf harbor-offline-installer-v2.5.0.tgz [root@master opt]# cd harbor && cp harbor.yml.tmpl harbor.yml[root@master harbor]# vi harbor.ymlhostname: 10.26.17.135 #将hostname修改为云端节点IP[root@master harbor]# ./install.sh……✔ ----Harbor has been installed and started successfully.----[root@master harbor]# docker login -u admin -p Harbor12345 master….Login Succeeded```打开浏览器使用云端master节点IP,访问Harbor页面,使用默认的用户名和密码进行登录(admin/Harbor12345),并创建一个名为“k8s”的命名空间,如下图所示:![图21 创建k8s项目.png](https://ydy-resources-prod.obs.cn-north-4.myhuaweicloud.com/resource/2bab301713924898f882fe4fdd2879c7/%E5%9B%BE1+%E6%96%B0%E5%BB%BAk8s%E9%A1%B9%E7%9B%AE.png)图2-1 创建k8s项目加载本地镜像并上传至Harbor镜像仓库,命令如下:```javascript[root@master harbor]# cd /opt/k8simage/ && sh load.sh[root@master k8simage]# sh push.sh 请输入您的Harbor仓库地址(不需要带http):10.26.17.135 #地址为云端master节点地址```(5)配置节点亲和性在云端节点分别配置flannel pod和proxy pod的亲和性,命令如下:```javascript[root@master k8simage]# kubectl edit daemonset -n kube-system kube-flannel-ds......spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/os operator: In values: - linux - key: node-role.kubernetes.io/edge #在containers标签前面增加配置 operator: DoesNotExist[root@master k8simage]# kubectl edit daemonset -n kube-system kube-proxyspec: affinity: #在containers标签前面增加配置 nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/edge operator: DoesNotExist[root@master k8simage]# kubectl get pod -n kube-systemNAME READY STATUS RESTARTS AGEkube-flannel-ds-q7mfq 1/1 Running 0 13mkube-proxy-wxhkm 1/1 Running 0 39s```可以查看到两个pod被修改完成之后重新运行,状态为Running。(6)Kubeedge云端环境搭建在云端master节点配置云端所需要的软件包,及服务配置文件,命令如下:```javascript[root@master k8simage]# cd /opt/kubeedge/[root@master kubeedge]# mv keadm /usr/bin/[root@master kubeedge]# mkdir /etc/kubeedge[root@master kubeedge]# tar -zxf kubeedge-1.11.1.tar.gz[root@master kubeedge]# cp -rf kubeedge-1.11.1/build/tools/* /etc/kubeedge/[root@master kubeedge]# cp -rf kubeedge-1.11.1/build/crds/ /etc/kubeedge/[root@master kubeedge]# tar -zxf kubeedge-v1.11.1-linux-amd64.tar.gz[root@master kubeedge]# cp -rf * /etc/kubeedge/```启动云端服务,命令如下:```javascript[root@master kubeedge]# cd /etc/kubeedge/[root@master kubeedge]# keadm deprecated init --kubeedge-version=1.11.1 --advertise-address=10.26.17.135 ……KubeEdge cloudcore is running, For logs visit: /var/log/kubeedge/cloudcore.logCloudCore started```● -kubeedge-version=:指定Kubeedge的版本,离线安装必须指定,否则会自动下载最新版本。● -advertise-address=:暴露IP,此处填写keadm所在的节点内网IP。如果要与本地集群对接的话,则填写公网IP。此处因为云上,所以只需要写内网IP。检查云端服务,命令如下:```javascript[root@master kubeedge]# netstat -ntpl |grep cloudcoretcp6 0 0 :::10000 :::* LISTEN 974/cloudcore tcp6 0 0 :::10002 :::* LISTEN 974/cloudcore ```(7)Kubeedge边缘端环境搭建在边缘端kubeedge-node节点复制云端软件包至本地,命令如下:```javascript[root@kubeedge-node ~]# scp root@master:/usr/bin/keadm /usr/local/bin/[root@kubeedge-node ~]# mkdir /etc/kubeedge[root@kubeedge-node ~]# cd /etc/kubeedge/[root@kubeedge-node kubeedge]# scp -r root@master:/etc/kubeedge/* /etc/kubeedge/```在云端master节点查询密钥,命令如下,复制的token值需要删掉换行符:```javascript[root@master kubeedge]# keadm gettoken1f0f213568007af1011199f65ca6405811573e44061c903d0f24c7c0379a5f65.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTEwNTc2ODN9.48eiBKuwwL8bFyQcfYyicnFSogra0Eh0IpyaRMg5NvY```在边端kubeedge-node使用命令加入集群,命令如下:```javascript[root@kubeedge-node ~]# keadm deprecated join --cloudcore-ipport=10.26.17.135:10000 --kubeedge-version=1.11.1 --token=1f0f213568007af1011199f65ca6405811573e44061c903d0f24c7c0379a5f65.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTEwNTc2ODN9.48eiBKuwwL8bFyQcfYyicnFSogra0Eh0IpyaRMg5NvYinstall MQTT service successfully.......[Run as service] service file already exisits in /etc/kubeedge//edgecore.service, skip downloadkubeedge-v1.11.1-linux-amd64/kubeedge-v1.11.1-linux-amd64/edge/kubeedge-v1.11.1-linux-amd64/edge/edgecorekubeedge-v1.11.1-linux-amd64/versionkubeedge-v1.11.1-linux-amd64/cloud/kubeedge-v1.11.1-linux-amd64/cloud/csidriver/kubeedge-v1.11.1-linux-amd64/cloud/csidriver/csidriverkubeedge-v1.11.1-linux-amd64/cloud/iptablesmanager/kubeedge-v1.11.1-linux-amd64/cloud/iptablesmanager/iptablesmanagerkubeedge-v1.11.1-linux-amd64/cloud/cloudcore/kubeedge-v1.11.1-linux-amd64/cloud/cloudcore/cloudcorekubeedge-v1.11.1-linux-amd64/cloud/controllermanager/kubeedge-v1.11.1-linux-amd64/cloud/controllermanager/controllermanagerkubeedge-v1.11.1-linux-amd64/cloud/admission/kubeedge-v1.11.1-linux-amd64/cloud/admission/admissionKubeEdge edgecore is running, For logs visit: journalctl -u edgecore.service -xe```如若提示yum报错,可删除多余yum源文件,重新执行加入集群命令:```javascript[root@kubeedge-node kubeedge]# rm -rf /etc/yum.repos.d/epel*```查看状态服务是否为active:```javascript[root@kubeedge-node kubeedge]# systemctl status edgecore● edgecore.service Loaded: loaded (/etc/systemd/system/edgecore.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2023-08-03 06:05:39 UTC; 15s ago Main PID: 8405 (edgecore) Tasks: 15 Memory: 34.3M CGroup: /system.slice/edgecore.service └─8405 /usr/local/bin/edgecore ```在云端master节点检查边缘端节点是否正常加入,命令如下:```javascript[root@master kubeedge]# kubectl get nodesNAME STATUS ROLES AGE VERSIONkubeedge-node Ready agent,edge 5m19s v1.22.6-kubeedge-v1.11.1master Ready control-plane,master 176m v1.22.1```若节点数量显示为两台,且状态为Ready,则证明节点加入成功。(8)云端节点部署监控服务在云端master节点配置证书,命令如下:```javascript[root@master kubeedge]# export CLOUDCOREIPS="10.26.17.135"```此处IP填写为云端master节点IP:```javascript[root@master kubeedge]# cd /etc/kubeedge/[root@master kubeedge]# ./certgen.sh stream```更新云端配置,使监控数据可以传送至云端master节点,命令如下:```javascript[root@master kubeedge]# vi /etc/kubeedge/config/cloudcore.yaml cloudStream: enable: true #修改为true streamPort: 10003router: address: 0.0.0.0 enable: true #修改为true port: 9443 restTimeout: 60```更新边缘端的配置,命令如下:```javascript[root@kubeedge-node kubeedge]# vi /etc/kubeedge/config/edgecore.yaml edgeStream: enable: true #修改为true handshakeTimeout: 30serviceBus: enable: true #修改为true```重新启动云端服务,命令如下:```javascript[root@master kubeedge]# kill -9 $(netstat -lntup |grep cloudcore |awk 'NR==1 {print $7}' |cut -d '/' -f 1)[root@master kubeedge]# cp -rfv cloudcore.service /usr/lib/systemd/system/[root@master kubeedge]# systemctl start cloudcore.service [root@master kubeedge]# netstat -lntup |grep 10003tcp6 0 0 :::10003 :::* LISTEN 15089/cloudcore```通过netstat -lntup |grep 10003查看端口,如果出现10003端口则表示成功开启cloudStream。重新启动边缘端服务,命令如下:```javascript[root@kubeedge-node kubeedge]# systemctl restart edgecore.service```在云端部署服务并查看收集指标,命令如下:```javascript[root@master kubeedge]# kubectl top nodesNAME CPU(cores) CPU% MEMORY(bytes) MEMORY% kubeedge-node 24m 0% 789Mi 6% master 278m 3% 8535Mi 54% ```服务部署后,需等待一段时间才能查看到kubeedge-node的资源使用情况,这时因为数据还未同步至云端节点。#### 2.1.2 安装依赖包首先安装gcc编译器,gcc有些系统版本已经默认安装,通过gcc -version查看,没安装的先安装gcc,不要缺少,否则有可能安装python出错,python3.7.0以下的版本可不装libffi-devel。在云端节点,下载离线yum源,安装软件,命令如下:```javascript[root@master ~]# curl -O http://mirrors.douxuedu.com/KubeEdge/python-kubeedge/gcc-repo.tar.gz[root@master ~]# tar -zxvf gcc-repo.tar.gz [root@master ~]# vi /etc/yum.repos.d/gcc.repo [gcc]name=gccbaseurl=file:///root/gcc-repogpgcheck=0enabled=1[root@master ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel gcc```#### 2.1.3 编译安装Python3.7在云端节点下载python3.7等安装包,并进行解压编译,命令如下:```javascript[root@master ~]# curl -O http://mirrors.douxuedu.com/KubeEdge/python-kubeedge/Python-3.7.3.tar.gz[root@master ~]# curl -O http://mirrors.douxuedu.com/KubeEdge/python-kubeedge/volume_packages.tar.gz[root@master ~]# mkdir /usr/local/python3 && tar -zxvf Python-3.7.3.tar.gz [root@master ~]# cd Python-3.7.3/[root@master Python-3.7.3]# ./configure --prefix=/usr/local/python3[root@master Python-3.7.3]# make && make install[root@master Python-3.7.3]# cd /root```#### 2.1.4 建立Python软链接解压volume_packages压缩包,然后将编译后的python3.7软连接至/usr/bin目录下,并查看版本信息,命令如下:```javascript[root@master ~]# tar -zxvf volume_packages.tar.gz [root@master ~]# yes |mv volume_packages/site-packages/* /usr/local/python3/lib/python3.7/site-packages/[root@master ~]# ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3[root@master ~]# ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3[root@master ~]# python3 --versionPython 3.7.3[root@master ~]# pip3 listPackage Version ------------------------ --------------------absl-py 1.4.0 aiohttp 3.8.4 aiosignal 1.3.1 anyio 3.7.0 async-timeout 4.0.2 asynctest 0.13.0 ......以下内容忽略......```### 2.2 搭建MongoDB#### 2.2.1 搭建MongoDB将mongoRepo.tar.gz软件包放到边侧节点中,然后进行解压,命令如下:```javascript[root@kubeedge-node ~]# curl -O http://mirrors.douxuedu.com/KubeEdge/python-kubeedge/mongoRepo.tar.gz[root@kubeedge-node ~]# tar -zxvf mongoRepo.tar.gz -C /opt/[root@kubeedge-node ~]# vi /etc/yum.repos.d/mongo.repo[mongo]name=mongoenabled=1gpgcheck=0baseurl=file:///opt/mongoRepo```在边侧节点安装mongodb,命令如下:```javascript[root@kubeedge-node ~]# yum -y install mongodb*```安装完成后配置mongo,命令如下:```javascript[root@kubeedge-node ~]# vi /etc/mongod.conf #找到下面的字段然后进行修改net: port: 27017 bindIp: 0.0.0.0 #修改为0.0.0.0```修改完毕后,重启服务,命令如下:```javascript[root@kubeedge-node ~]# systemctl restart mongod && systemctl enable mongod```验证服务,命令如下:```javascript[root@kubeedge-node ~]# netstat -lntup |grep 27017tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 10195/mongod ```若出现27017端口,则MongoDB服务启动成功。#### 2.2.2 创建数据库边侧节点登录MongoDB,创建数据库与集合,命令如下:```javascript[root@kubeedge-node ~]# mongo> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB> use edgesqlswitched to db edgesql> show collections> db.createCollection("users"){ "ok" : 1 }> db.createCollection("ai_data"){ "ok" : 1 }> db.createCollection("ai_model"){ "ok" : 1 }> show collectionsai_dataai_modelusers>#按键盘上的Ctrl+D可退出```### 2.3 搭建H5前端ydy_cloudapp_front_dist是编译后的前端H5程序,通过Web Server运行即可。#### 2.3.1 Linux运行H5前端在边侧节点下载gcc-repo和ydy_cloudapp_front_dist压缩包并进行解压,配置Yum源并将解压后的文件拷贝至Nginx站点目录,命令如下:```javascript[root@kubeedge-node ~]# curl -O http://mirrors.douxuedu.com/KubeEdge/python-kubeedge/gcc-repo.tar.gz[root@kubeedge-node ~]# curl -O http://mirrors.douxuedu.com/KubeEdge/python-kubeedge/ydy_cloudapp_front_dist.tar.gz[root@kubeedge-node ~]# tar -zxvf gcc-repo.tar.gz [root@kubeedge-node ~]# tar -zxvf ydy_cloudapp_front_dist.tar.gz [root@kubeedge-node ~]# vi /etc/yum.repos.d/gcc.repo[gcc]name=gccbaseurl=file:///root/gcc-repogpgcheck=0enabled=1[root@kubeedge-node ~]# yum install -y nginx[root@kubeedge-node ~]# rm -rf /usr/share/nginx/html/*[root@kubeedge-node ~]# mv ydy_cloudapp_front_dist/index.html /usr/share/nginx/html/[root@kubeedge-node ~]# mv ydy_cloudapp_front_dist/static/ /usr/share/nginx/html/[root@kubeedge-node ~]# vi /etc/nginx/nginx.conf#配置nginx反向代理,进入配置文件在文件下方找到相应的位置进行配置server { listen 80; listen [::]:80; server_name localhost; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /404.html { } location ~ ^/cloudedge/(.*) { proxy_pass http://10.26.17.135:30850/cloudedge/$1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type'; add_header 'Access-Control-Allow-Credentials' 'true'; } error_page 500 502 503 504 /50x.html; location = /50x.html { } }[root@kubeedge-node ~]# nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful[root@kubeedge-node ~]# systemctl restart nginx && systemctl enable nginx```
  • [热门活动] 华为云产品建议
     为了保持在云计算市场的竞争力并不断提升用户体验,华为云(HUAWEI CLOUD)未来可以考虑以下几点优化建议。这些建议覆盖了技术创新、用户体验、安全性、合规性、以及生态系统建设等方面。 以及部分小反馈问题。 ### 技术创新  1. **多云和混合云支持**:     - 提供更加完善的多云和混合云管理工具,帮助企业无缝管理来自不同供应商的云资源。     - 增强跨云的互操作性和数据迁移能力,使用户能够轻松地在不同云环境之间迁移工作负载和数据。  2. **AI/ML能力深化**:     - 加大对人工智能和机器学习平台的研发投入,增强模型训练和部署的自动化程度。     - 提供更多领域的预训练模型,涵盖自然语言处理、计算机视觉等热门应用场景。  3. **边缘计算扩展**:     - 扩展边缘计算节点的覆盖范围,提高边缘计算服务的性能和可靠性,满足越来越多物联网和实时数据处理的需求。     - 推出针对特定行业的边缘计算解决方案,例如智能制造、智慧城市等。  4. **区块链技术应用**:     - 深入探索区块链技术在供应链管理、金融等领域的应用,推出基于区块链的服务平台,提供可信的多方协作机制。  ### 用户体验  1. **统一的用户界面**:     - 开发统一的控制台界面,实现所有云产品和服务的集中管理,提供一致的用户体验。     - 增加更多自定义视图和仪表板功能,使用户能够根据自身需求定制界面布局。  2. **API易用性**:     - 优化API文档和开发者工具,提供更详细的使用示例和最佳实践,降低开发者的入门门槛。  3. **智能助手和推荐系统**:     - 引入智能助手功能,实时分析用户行为,提供个性化的操作建议和优化方案。     - 通过机器学习算法,根据用户的使用模式和历史数据,推荐最适合的云资源配置。  ### 安全性和合规性  1. **零信任架构**:     - 推广零信任安全架构,通过严格的身份验证和权限控制,确保每一次访问都经过认证和授权。     - 提供全面的安全评估工具,帮助企业识别和修补安全漏洞。  2. **隐私保护和数据主权**:     - 确保云服务符合各国的数据隐私法规,推出数据主权保护方案,允许用户选择数据存储位置。     - 提供先进的数据加密和匿名化技术,保护用户敏感信息。  ### 成本管理  1. **智能成本优化**:     - 开发智能成本优化工具,实时监测用户资源使用情况,提供节省开支的具体建议。     - 提供可视化的成本分析和预测工具,帮助用户更好地规划预算和资源分配。  2. **灵活的计费模式**:     - 推出更多灵活的计费选项,如按需计费、预留实例折扣、包年包月等,满足不同业务场景下的需求。     - 提供细粒度的费用拆分和追踪,帮助企业精确分摊云成本到各业务部门或项目团队。  ### 生态系统建设  1. **合作伙伴计划**:     - 拓展与ISV(独立软件供应商)、SI(系统集成商)和MSP(托管服务提供商)的合作,建立强大的合作伙伴生态系统。     - 提供丰富的合作伙伴激励政策,鼓励合作伙伴开发和推广基于华为云的平台和应用。  2. **开发者社区**:     - 建设和维护一个活跃的开发者社区,举办定期的技术交流活动、黑客马拉松和开发者大赛,吸引全球开发者参与。     - 提供开放的API和SDK,支持更多第三方开发者基于华为云构建创新应用。  ### 全球化布局  1. **全球数据中心布局**:     - 加快全球数据中心布局,特别是在新兴市场和关键区域,提高全球用户的服务可达性和性能。     - 提供多区域高可用性的解决方案,确保业务连续性和数据灾备能力。  2. **本地化服务和支持**:     - 提供符合各国法规和市场需求的本地化服务和解决方案。     - 在主要市场设立本地化客户支持团队,提供7x24小时的技术支持和服务。  上周体验的一个一键部署AI生图应用,非常影响体验,说是体验,还给人计费(尴尬),很多报错,回帖汇报之后,没人给出反馈?不过,对于云服务主机,使用redis 数据库之类的项目部署,还是很顺利,IDE 使用方面还是有待跟国际上通用的IDE接轨,使得设计更加全面,更加友好!希望这些建议能为华为云未来的发展提供一些有价值的参考。 
  • [综合] 云业务知识点整理A
    云业务知识点整理整理整理AAAAA
  • [制造] MES数据追溯常遇问题及解决方法
     MES数据追溯常遇问题及解决方法:   在实际数字化工厂MES应用过程,由于设计或使用不当,数据追溯过程中也可能会存在诸多问题,常遇问题包括: 1.     数据质量问题     可能存在数据录入错误、数据缺失或不完整等情况,导致追溯结果的准确性受到影响。解决这个问题的关键是加强数据采集和录入的质量管理,例如通过自动化数据采集、数据验证机制和培训员工等方式来减少错误。 2.     数据追溯复杂度     在大规模生产环境中,涉及到的数据量庞大,追踪产品的整个生命周期可能需要反向追溯多个环节。为了简化追溯过程,可以对数据进行有效的分类和标识,建立起严密的数据关联关系,并利用先进的数据分析技术来优化追溯路径。 3.     系统集成困难     企业往往拥有多个独立的系统(如ERP、PLM等),这些系统之间的数据流通和互操作可能存在障碍,使得MES数据追溯变得复杂。为了解决这个问题,可以采用标准化的接口和协议,实现各个系统之间的无缝衔接,确保数据能够顺畅流通。 4.     安全与隐私保护 MES数据追溯涉及到大量的敏感信息,包括产品设计、生产参数、原材料供应商等。确保数据的安全性和隐私保护是一个重要的挑战。优化措施包括加密数据传输、权限管理、审计跟踪等,以保护数据的机密性和完整性。  为了优化MES数据追溯,以下是一些常见的措施: 1.     自动化数据采集     采用自动化手段收集数据,减少人工录入错误,提高数据质量和准确性。 2.     数据标准化与分类     建立统一的数据标准和分类体系,对数据进行规范化处理,便于后续的查询和追溯。 3.     数据分析与挖掘     利用数据分析技术,对追溯数据进行挖掘和分析,发现潜在问题和改进点,优化生产流程和质量控制。 4.     强化系统集成能力     通过采用标准化接口和协议,实现不同系统之间的无缝集成,确保数据的流通和一致性。 5.     安全与隐私保护     加强数据安全管理,采用加密传输、身份认证、权限控制等措施,保护数据的隐私和机密性。 6.     培训和意识培养 加强员工的培训和意识培养,提高他们对MES数据追溯的重要性和正确操作方法的认识,确保数据的准确性和可靠性。     通过这些优化措施,可以提高MES数据追溯的效率和精确性,帮助企业更好地管理生产过程和提升产品质量。 以上就是关于万界星空科技云MES制造执行系统中关于追溯功能的相关介绍。 如果你有相关需求,欢迎私信或者百度搜索万界星空科技官网与我们联系。 
  • [伙伴总结分享] 【中软CTSP项目分享】人民xxx出版社有限公司上云迁移项目案例分享
    项目名称】:人民xxx出版社有限公司上云迁移项目【交付地点】:北京【客户需求】:本项目主要任务将在腾讯云上的项目迁移至华为云,涉及Nginx、小程序Web服务、license服务、rabbitmq服务、logstash日志服务的迁移。ECS 10台、MariaDB数据库2台,ES日志服务3节点、redis 集群1个,MongoDB数据库3节点, 数据库迁移数据量约 213GB,对象文件约323G。【迁移要求】:1、迁移方式:可停机迁移,迁移过程中不影响原服务对外提供业务,业务割接时,保证数据不丢失。2、迁移时间:在两周内完成迁移任务,时间比较紧迫。【进展情况】:分类关键任务描述计划完成时间实际完成时间业务调研调研客户业务架构图和网络架构图7月18日7月18日迁移方案设计迁移实施方案输出7月19日7月19日资源发放&业务部署在华为端下发ECS/CCE/MariaDB/DDS/Redis/CSS/OBS/WAF/ELB7月20日7月20日压力&性能测试使用华为云CPTS工具对小程序,web服务,PC端管理后台,中间件服务等系统做压力性能测试7月21日7月21日MariaDB迁移使用MySql Dump把源端的数据下载到本地,再通过专线渠道迁移到华为侧的MariaDB集群7月24日5月24日业务验证MariaDB,OBS,DDS数据一致性对比,并也业务系统联调测试7月26日7月26日割接演练小程序,web服务,PC端管理后台,中间件服务等业务系统割接演练7月28日7月28日业务割接健康知识进万家业务系统正式割接,停止源端业务,数据做最后一次增量同步,并做数据一致性校验,将业务流量切至华为云7月29日7月29日运行保障在CES中添加ECS、ELB、Redis,MariaDB等云服务监控,并做巡检8月11日/【过程问题】:问题描述解决方法提单人责任人提单时间解决时间华为云ECS绑定弹性EIP后,使用VPN连接后内网不通;VPC是加载到一个云连接里面的,指向云连接的路由是0.0.0.0/0,EIP的路由优先级比0.0.0.0/0的路由优先级更高,因此回包走EIP出去了,所以不通。在主账号云连接实例的VPC配置的CIDR里面增加云下的VPN网段客户我方7月20日7月21日华为云主子账户切换关联问题取消后重新关联客户我方7月21日7月21日Codearts创建项目时权限不足问题在主账号的租户设置>需求管理 > 设置项目创建者,设置相应的权限客户我方7月21日7月21日短信服务签名选择涉及第三方权益时,无法提供授权书在申请签名时涉及第三方权限选择否,上传营业执照客户我方7月21日7月21日MariaDB的percona5.7版本与MySQL5.7兼容性的问题后端核实是兼容的客户我方7月24日7月24日使用OMS迁移OBS数据时迁移失败GET_SRC_OBJ_me ta_FAILURE获取源端对象元数据失败,因为法律原因无法使用,被封禁图片,不进行迁移客户我方7月24日7月24日Codearts的pipeline流水线不支持openeuler的系统更换成Euleros系统客户我方7月25日7月25日迁移任务暂停后,目标实例只读状态结束迁移任务,结束任务后才能恢复成读写状态客户我方7月25日7月25日redis集群模式是否有代理服务推荐华为云GaussDB(for Redis)客户我方7月25日7月25日Redis修改multi-db参数时报错,需要清空数据才能修改,控制台执行清空后,还是有报错信息尝试用命令flushall进行清空,重启后可以正常修改客户我方7月26日7月26日RDS的备份恢复时只能选择恢复到新实例,不能恢复到本实例由于是本地SSD的原因,恢复到新实例后再进行数据同步到原实例客户我方7月28日7月28日
  • 想学习
    我什么都不会,有没有人教我。
  • [交流分享] 重塑元宇宙体验!3DCAT元宇宙实时云渲染解决方案来了
    元宇宙作为人工智能、云计算和数字孪生等前沿技术的结合体,近年来越发受到各大企业重视。元宇宙的应用场景层出不穷,不仅包括营销推广场景,还有品牌活动和电商销售,能有效提升品宣和商业转化效果。元宇宙也具有极大的建设价值,从品牌文化展示到3D场景化联动再到互动社群运营,参与元宇宙建设可以占据元宇宙的发展潮流,更好地赋能品牌营销。01 实时云渲染解决元宇宙存在的疑难杂症随着元宇宙的发展,在过去几年的研发和运营过程中,3DCAT发现传统元宇宙场景在实际使用中存在一些困难,如用户硬件性能门槛高、内容碎片化、数据安全保障差、APP分发成本高、传播效率低且高成本、上云时间长以及缺乏标准化等。随着5G技术和云计算的快速发展,实时云渲染技术提升到了一个全新的高度,成为了元宇宙行业的核心支撑技术之一,也成为了元宇宙场景规模化使用和传播的有效技术路径,助力企业实现商业化闭环。为解决元宇宙行业存在的疑难杂症,瑞云科技旗下的3DCAT元宇宙实时渲染云全新推出了「3DCAT元宇宙全域合作解决方案」。02 3DCAT实时云渲染让元宇宙无处不在3DCAT基于云计算理念,将三维应用部署在云端运行,云端资源进行图形数据的实时计算和输出,并把运行结果“流”(Streaming)的方式推送到终端呈现,终端用户可随时随地交互式访问各种三维应用。3DCAT在SaaS、PaaS和IaaS三层面提供一站式云渲染能力,覆盖多类型场景,为元宇宙产业赋能。3DCAT的六大优势:高性价比、批量采购、分时复用、独享性能、定制化方案和企业级安全保障,给您的元宇宙解决方案提供保障。「轻终端,重云端」云渲染将更多的图形计算能力、存储需求移至云端,使得终端的图形计算能力和存储配置要求大大降低,为终端交互设备轻便化和移动化提供了基础 SaaS 级支持。03 3DCAT提供高性价比价格和优质服务除了优质的云计算云渲染服务外,3DCAT还有着高性价比价格和全面7*24小时的服务能力,为您的元宇宙解决方案保驾护航。04 3DCAT元宇宙合作案例&服务作为元宇宙实时云渲染行业的先行者,3DCAT已在汽等领域提供专业的实时云渲染服务,为不同行业迈入元宇宙做后盾。1 奥迪官网展示3DCAT与一汽奥迪深度合作,为一汽奥迪官网线上个性化订车提供云渲染展示解决方案,让消费者足不出户便可亲临4S店现场。2 广州非遗街区(元宇宙)广州非遗街区(元宇宙)搭建以北京路骑楼为原型的虚拟公共文化空间,通过3DCAT实时渲染云端图形渲染算力和高度自研的网络串流技术,将计算结果实时推送到用户终端。让人们可以足不出户沉浸式赏非遗、玩游戏、品美食、逛展览、看展演。3 2022广东国际旅游产业博览会元宇宙本届旅博会结合5G、VR(虚拟现实)、裸眼3D、人工智能等技术呈现展览展示效果,实现线上3D虚拟漫游与360°全景相结合,主要设置云展示中心功能,实现云体验、云展览、云推介等一站式云服务,为参展商打造高效商务对接通路,为公众提供多样便民惠民服务。本文《重塑元宇宙体验!3DCAT元宇宙实时云渲染解决方案来了》内容由3DCAT实时云渲染解决方案提供商整理发布,如需转载,请注明出处及链接。
  • [问题求助] DME搭建
    应如何基于DME引擎搭建自己所需的企业资产管理系统呢?
  • [分享交流] AL写诗
  • [其他] 从别的日子里飘浮到我的生命里的云,不再落下雨点或引起风暴了,而给予我的夕阳的天空以色彩。
    从别的日子里飘浮到我的生命里
  • [行业资讯] 华为云联合赞奇科技发布云设计协同解决方案,全面释放数字化办公生产力
    日前,华为云联合赞奇科技联合发布了云设计协同解决方案,为设计行业提供更为灵活高效的全新生产模式,全面释放数字化办公生产力。赞奇科技董事长梅向东、赞奇科技总经理金伟、华为云中国区总裁洪方明、华为云基础服务领域总裁高江海、华为云Marketing与生态总裁陈亮、华为云与计算江苏业务部总经理王震、华为云桌面云解决方案总经理张德等与会并共同出席发布仪式。  华为云与赞奇科技联合发布云设计协同解决方案  传统设计办公场景下,存在办公场所固定、业务协同效率低、硬件采购成本高以及软硬件换代速度快等挑战,而应对这些挑战不仅需要丰富的行业经验,还需结合扎实的技术功底,这也是双方联手合作的初衷。  赞奇科技成立于2010年,致力于三维视觉计算云技术研发与应用,目前完全自主研发并运营云渲染平台,为影视、动漫、建筑、室内室外、游戏、工业设计等用户提供云渲染服务以及其他相关的云PaaS、SaaS服务。  华为云提供高性能、高弹性的基础服务,以及立体完整的安全服务和合规体系,为联合解决方案提供了坚实的技术底座。  云设计协同解决方案具备如下优势:  办公模式更灵活:设计师可随时随地远程接入云桌面,不再受到物理设备及办公地点的约束,满足anytime、anywhere的移动办公诉求;  业务协同更高效:华为云共享文件存储可弹性扩展,IOPS性能随容量线性增长,并且解决多方协同数据不一致问题,轻松支持协同制作;  即开即用,按需付费:支持灵活的付费模式,有效降低专业软硬件高额的固定资产投资成本,更贴合设计行业灵活弹性的业务特点;  快速获取顶尖能力:只需几个步骤即可获取专业级显卡及顶尖CPU的算力,解决本地电脑配置不足导致渲染效率低的问题,大幅提高生产力。  华为云中国区总裁洪方明表示:“华为云携手赞奇科技,通过云服务的模式带来稳定、安全、可靠的面向各类设计场景的全新解决方案,相信将成为设计行业数字化转型时期全新的生产力工具。华为云将持续赋能应用,使能数据,做智能世界的黑土地,携手赞奇等拥有丰富行业积累的伙伴,共同为设计行业的数字化转型持续贡献价值。”  赞奇科技董事长梅向东表示:“今年由于疫情原因,数字化进程已经大大加速,云会议、云办公、云协同等云上应用如雨后春笋般爆炸式地增长。面对这样的风口和机遇,我们希望拥抱变化、拥抱机遇,用创新理念和技术来推动时代的发展和进步,联同华为及行业合作伙伴为客户提供更加与时俱进的产品,共同开创行业数字化新时代。”文章转载来源:it168