• [技术干货] 一键部署k8s最终版
    1. 控制节点主机名为 controller,设置计算节点主机名为 compute;[root@controller ~]# hostnamectl set-hostname controller && su[root@compute ~]# hostnamectl set-hostname compute && su2.hosts 文件将 IP 地址映射为主机名。[root@controller&&compute ~]#vi /etc/hosts192.168.100.10 controller192.168.100.20 compute[root@controller&&compute ~]#vi /etc/selinux/config更改SELINUX=disabled[root@controller&&compute ~]#setenforce 0[root@controller&&compute ~]#systemctl stop firewalld && systemctl disable firewalld3.配置 yum 源[root@controller ~]rm -rf /etc/yum.repos.d/*[root@controller&&compute ~]# vi /etc/yum.repos.d/http.repo[centos]name=centosbaseurl=http://192.168.133.130/centosgpgcheck=0enabled=1 [openstack]name=openstackbaseurl=http://192.168.133.130/openstack/iaas-repogpgcheck=0enabled=1[root@controller&&compute ~]#yum clean all && yum repolist && yum makecache 2.1.1 部署容器云平台使用 OpenStack 私有云平台创建两台云主机,分别作为 Kubernetes 集群的 master 节点和 node 节点,然后完成 Kubernetes 集群的部署,并完成 Istio 服务网 格、KubeVirt 虚拟化和 Harbor 镜像仓库的部署。创建俩台云主机并配网# Kubernetes 集群的部署[root@localhost ~]# mount -o loop chinaskills_cloud_paas_v2.0.2.iso /mnt/[root@localhost ~]# cp -rfv /mnt/* /opt/[root@localhost ~]# umount /mnt/[root@master ~]# hostnamectl set-hostname master && su[root@worker ~]# hostnamectl set-hostname worker && su# 安装kubeeasy[root@master ~]# mv /opt/kubeeasy /usr/bin/kubeeasy# 安装依赖环境[root@master ~]# kubeeasy install depend \--host 192.168.59.200,192.168.59.201 \--user root \--password 000000 \--offline-file /opt/dependencies/base-rpms.tar.gz# 安装k8s[root@master ~]# kubeeasy install k8s \--master 192.168.59.200 \--worker 192.168.59.201 \--user root \--password 000000 \--offline-file /opt/kubernetes.tar.gz# 安装istio网格[root@master ~]# kubeeasy add --istio istio# 安装kubevirt虚拟化[root@master ~]# kubeeasy add --virt kubevirt# 安装harbor仓库[root@master ~]# kubeeasy add --registry harbor[root@k8s-master-node1 ~]# vim pod.yamlapiVersion: v1kind: Podmetadata:  name: examspec:  containers:  - name: exam    image: nginx:latest    imagePullPolicy: IfNotPresent    env:    - name: exam      value: "2022"[root@k8s-master-node1 ~]# kubectl apply -f pod.yaml[root@k8s-master-node1 ~]# kubectl get pod#部署 Istio 服务网格[root@k8s-master-node1 ~]# kubectl create ns examnamespace/exam created[root@k8s-master-node1 ~]# kubectl edit ns exam更改为:  labels:    istio-injection: enabled[root@k8s-master-node1 ~]# kubectl describe ns exam  #查看任务 2 容器云服务运维(15 分)2.2.1 容器化部署 Node-Exporter编写 Dockerfile 文件构建 exporter 镜像,要求基于 centos 完成 Node-Exporter 服务的安装与配置,并设置服务开机自启。上传Hyperf.tar包[root@k8s-master-node1 ~]#tar -zxvf Hyperf.tar.gz[root@k8s-master-node1 ~]#cd hyperf/[root@k8s-master-node1 hyperf]#docker load -i centos_7.9.2009.tar上传node_exporter-1.7.0.linux-amd64.tar包[root@k8s-master-node1 hyperf]#vim Dockerfile-exporterFROM centos:centos7.9.2009MAINTAINER ChinaskillsRUN rm -rf /etc/yum.repos.d/*ADD node_exporter-1.7.0.linux-amd64.tar.gz /root/EXPOSE 9100ENTRYPOINT ["./root/node_exporter-1.7.0.linux-amd64/node_exporter"][root@k8s-master-node1 hyperf]#docker build -t monitor-exporter:v1.0 -f Dockerfile-exporter .2.2.2 容器化部署Alertmanager编写 Dockerfile 文件构建 alert 镜像,要求基于 centos:latest 完成 Alertmanager 服务的安装与配置,并设置服务开机自启。上传alertmanager-0.26.0.linux-amd64.tar包[root@k8s-master-node1 hyperf]#vim Dockerfile-alertFROM centos:centos7.9.2009MAINTAINER ChinaskillsRUN rm -rf /etc/yum.repos.d/*ADD alertmanager-0.26.0.linux-amd64.tar.gz /root/EXPOSE 9093 9094ENTRYPOINT ["./root/alertmanager-0.26.0.linux-amd64/alertmanager","--config.file","/root/alertmanager-0.26.0.linux-amd64/alertmanager.yml"][root@k8s-master-node1 hyperf]#docker build -t monitor-alert:v1.0 -f Dockerfile-alert .2.2.3 容器化部署 Grafana编写 Dockerfile 文件构建 grafana 镜像,要求基于 centos 完成 Grafana 服务 的安装与配置,并设置服务开机自启。上传grafana-6.4.1.linux-amd64.tar.gz包[root@k8s-master-node1 hyperf]#vim Dockerfile-grafanaFROM centos:centos7.9.2009MAINTAINER ChinaskillsRUN rm -rf /etc/yum.repos.d/*ADD grafana-6.4.1.linux-amd64.tar.gz /root/EXPOSE 3000ENTRYPOINT ["./root/grafana-6.4.1/bin/grafana-server","-homepath","/root/grafana-6.4.1/"][root@k8s-master-node1 hyperf]#docker build -t monitor-grafana:v1.0 -f Dockerfile-grafana .[root@k8s-master-node1 hyperf]#docker run -d --name grafana-exam-jiance monitor-grafana:v1.0 && sleep 5 && docker exec grafana-exam-jiance ps -aux && docker rm -f grafana-exam-jiance2.2.4 容器化部署 Prometheus 编写 Dockerfile 文件构建 prometheus 镜像,要求基于 centos 完成 Promethues 服务的安装与配置,并设置服务开机自启。上传prometheus-2.13.0.linux-amd64.tar.gz并解压[root@k8s-master-node1 hyperf]#tar -zxvf prometheus-2.13.0.linux-amd64.tar.gz[root@k8s-master-node1 hyperf]#mv prometheus-2.13.0.linux-amd64/prometheus.yml /root/hyperf && rm -rf prometheus-2.13.0.linux-amd64[root@k8s-master-node1 hyperf]#vim Dockerfile-prometheusFROM centos:centos7.9.2009MAINTAINER ChinaskillsRUN rm -rf /etc/yum.repos.d/*ADD prometheus-2.13.0.linux-amd64.tar.gz /root/RUN mkdir -p /data/prometheus/COPY prometheus.yml /data/prometheus/EXPOSE 9090ENTRYPOINT ["./root/prometheus-2.13.0.linux-amd64/prometheus","--config.file","/data/prometheus/prometheus.yml"][root@k8s-master-node1 hyperf]#docker build -t monitor-prometheus:v1.0 -f Dockerfile-prometheus .[root@k8s-master-node1 hyperf]#vim prometheus.yml #改动- job_name: 'prometheus'    static_configs:    - targets: ['localhost:9090']  - job_name: 'node'    static_configs:    - targets: ['node:9100']  - job_name: 'alertmanager'    static_configs:    - targets: ['alertmanager:9093']  - job_name: 'node-exporter'    static_configs:    - targets: ['node:9100']2.2.5 编排部署 Prometheus编写 docker-compose.yaml 文件,使用镜像 exporter、alert、grafana 和 prometheus 完成监控系统的编排部署。[root@k8s-master-node1 hyperf]#vim docker-compose.yaml编排部署prometheusversion: '3'services:  node:    container_name: monitor-node    image: monitor-exporter:v1.0    restart: always    hostname: node    ports:      - 9100:9100  alertmanager:    container_name: monitor-alertmanager    image: monitor-alert:v1.0    depends_on:      - node    restart: always    hostname: alertmanager    links:      - node    ports:      - 9093:9093      - 9094:9094  grafana:    container_name: monitor-grafana    image: monitor-grafana:v1.0    restart: always    depends_on:      - node      - alertmanager    hostname: grafana    links:      - node      - alertmanager    ports:      - 3000:3000  prometheus:    container_name: monitor-prometheus    image: monitor-prometheus:v1.0    restart: always    depends_on:      - node      - alertmanager      - grafana    hostname: prometheus    links:      - node      - alertmanager      - grafana    ports:      - 9090:9090[root@k8s-master-node1 ~]#docker-compose up -d 2.2.6 安装 Jenkins将 Jenkins 部署到 default 命名空间下。要求完成离线插件的安装,设置 Jenkins 的登录信息和授权策略。上传BlueOcean.tar.gz包[root@k8s-master-node1 ~]#tar -zxvf BlueOcean.tar.gz[root@k8s-master-node1 ~]#cd BlueOcean/images/[root@k8s-master-node1 images]# docker load -i java_8-jre.tar[root@k8s-master-node1 images]# docker load -i jenkins_jenkins_latest.tar[root@k8s-master-node1 images]# docker load -i gitlab_gitlab-ce_latest.tar[root@k8s-master-node1 images]# docker load -i maven_latest.tar[root@k8s-master-node1 images]# docker tag maven:latest  192.168.59.200/library/maven[root@k8s-master-node1 images]# docker login 192.168.59.200Username: adminPassword: (Harbor12345)WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-store[root@k8s-master-node1 images]# docker push  192.168.59.200/library/maven#安装Jenkins[root@k8s-master-node1 BlueOcean]# kubectl create ns devops[root@k8s-master-node1 BlueOcean]# kubectl create deployment jenkins -n devops --image=jenkins/jenkins:latest --port 8080 --dry-run -o yaml > jenkins.yaml[root@k8s-master-node1 BlueOcean]# vim jenkins.yaml # 进入添加apiVersion: apps/v1kind: Deploymentmetadata:  creationTimestamp: null  labels:    app: jenkins  name: jenkins  namespace: devopsspec:  replicas: 1  selector:    matchLabels:      app: jenkins  strategy: {}  template:    metadata:      creationTimestamp: null      labels:        app: jenkins    spec:      nodeName: k8s-master-node1      containers:      - image: jenkins/jenkins:latest        imagePullPolicy: IfNotPresent        name: jenkins        ports:        - containerPort: 8080          name: jenkins8080        securityContext:          runAsUser: 0          privileged: true        volumeMounts:        - name: jenkins-home          mountPath: /home/jenkins_home/        - name: docker-home          mountPath: /run/docker.sock        - name: docker          mountPath: /usr/bin/docker        - name: kubectl          mountPath: /usr/bin/kubectl        - name: kube          mountPath: /root/.kube      volumes:      - name: jenkins-home        hostPath:          path: /home/jenkins_home/      - name: docker-home        hostPath:          path: /run/docker.sock      - name: docker        hostPath:          path: /usr/bin/docker      - name: kubectl        hostPath:          path: /usr/bin/kubectl      - name: kube        hostPath:          path: /root/.kube[root@k8s-master-node1 BlueOcean]# kubectl apply -f jenkins.yamldeployment.apps/jenkins created[root@k8s-master-node1 ~]# kubectl get pod -n devops NAME                      READY   STATUS    RESTARTS   AGEjenkins-7d4f5696b7-hqw9d   1/1     Running   0          88s# 进入jenkins,确定docker和kubectl成功安装[root@k8s-master-node1 ~]# kubectl exec -it -n devops jenkins-7d4f5696b7-hqw9d bash[root@k8s-master-node1 BlueOcean]# kubectl expose deployment jenkins -n devops --port=8080 --target-port=30880 --dry-run -o yaml >> jenkins.yaml[root@k8s-master-node1 BlueOcean]# vim jenkins.yaml # 进入修改第二次粘贴在第一此的后面apiVersion: v1kind: Servicemetadata:  creationTimestamp: null  labels:    app: jenkins  name: jenkins  namespace: devopsspec:  ports:  - port: 8080    protocol: TCP    name: jenkins8080    nodePort: 30880  - name: jenkins    port: 50000    nodePort: 30850  selector:    app: jenkins  type: NodePort[root@k8s-master-node1 BlueOcean]# kubectl apply -f jenkins.yamlservice/jenkins created[root@k8s-master-node1 ~]# kubectl get -n devops svcNAME      TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGEjenkins   NodePort   10.96.53.170   <none>        8080:30880/TCP   10s# 使用提供的软件包完成Blue Ocean等离线插件的安装[root@k8s-master-node1 BlueOcean]# kubectl -n devops cp plugins/ jenkins-7d4f5696b7-hqw9d:/var/jenkins_home/* *访问 ip:30880 进入jenkins*# 查看密码[root@k8s-master-node1 BlueOcean]# kubectl -n devops exec jenkins-7d4f5696b7-hqw9d --cat /var/jenkins_home/secrets/initialAdminPassword    2.2.7 安装 GitLab 将 GitLab 部署到 default 命名空间下,要求设置 root 用户密码,新建公开项 目,并将提供的代码上传到该项目。[root@k8s-master-node1 BlueOcean]# kubectl create deployment gitlab -n devops --image=gitlab/gitlab-ce:latest --port 80 --dry-run -o yaml > gitlab.yamlW0222 12:00:34.346609   25564 helpers.go:555] --dry-run is deprecated and can be replaced with --dry-run=client.[root@k8s-master-node1 BlueOcean]# vim gitlab.yamljitlab的配置文件apiVersion: apps/v1kind: Deploymentmetadata:  creationTimestamp: null  labels:    app: gitlab  name: gitlab  namespace: devopsspec:  replicas: 1  selector:    matchLabels:      app: gitlab  strategy: {}  template:    metadata:      creationTimestamp: null      labels:        app: gitlab    spec:      containers:      - image: gitlab/gitlab-ce:latest        imagePullPolicy: IfNotPresent        name: gitlab-ce        ports:        - containerPort: 80        env:        - name: GITLAB_ROOT_PASSWORD          value: admin@123[root@k8s-master-node1 BlueOcean]# kubectl apply -f gitlab.yamldeployment.apps/gitlab created[root@k8s-master-node1 BlueOcean]# kubectl  get pod -n devopsNAME                      READY   STATUS    RESTARTS      AGEgitlab-5b47c8d994-8s9qb   1/1     Running   0             17sjenkins-bbf477c4f-55vgj   1/1     Running   2 (15m ago)   34m[root@k8s-master-node1 BlueOcean]# kubectl expose deployment gitlab -n devops --port=80 --target-port=30888 --dry-run=client -o yaml >> gitlab.yaml[root@k8s-master-node1 BlueOcean]# vim gitlab.yaml # 进入添加---apiVersion: v1kind: Servicemetadata:  creationTimestamp: null  labels:    app: gitlab  name: gitlab  namespace: devopsspec:  ports:  - port: 80    nodePort: 30888  selector:    app: gitlab  type: NodePort[root@k8s-master-node1 BlueOcean]# kubectl apply -f gitlab.yamldeployment.apps/gitlab configuredservice/gitlab created[root@k8s-master-node1 BlueOcean]# kubectl get svc -n devopsNAME      TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGEgitlab    NodePort   10.96.149.160   <none>        80:30888/TCP     6sjenkins   NodePort   10.96.174.123   <none>        8080:30880/TCP   8m7s# 等待gitlab启动,访问IP:30888  root , admin@123 登录 Gitlab* # 将springcloud文件夹中的代码上传到该项目,Gitlab提供了代码示例[root@k8s-master-node1 BlueOcean]# cd springcloud/[root@k8s-master-node1 springcloud]# git config --global user.name "Administrator"[root@k8s-master-node1 springcloud]# git config --global user.email "admin@example.com"[root@k8s-master-node1 springcloud]# git remote remove origin[root@k8s-master-node1 springcloud]# git remote add origin  http://192.168.100.23:30888/root/springcloud.git[root@k8s-master-node1 springcloud]# git add .[root@k8s-master-node1 springcloud]# git commit -m "Initial commit"# On branch masternothing to commit, working directory clean[root@k8s-master-node1 springcloud]# git push -u origin masterUsername for 'http://192.168.100.23:30888': root Password for 'http://root@192.168.100.23:30888':(admin@123)Counting objects: 3192, done.Delta compression using up to 4 threads.Compressing objects: 100% (1428/1428), done.Writing objects: 100% (3192/3192), 1.40 MiB | 0 bytes/s, done.Total 3192 (delta 1233), reused 3010 (delta 1207)remote: Resolving deltas: 100% (1233/1233), done.To http://192.168.100.23:30888/root/springcloud.git * [new branch]      master -> masterBranch master set up to track remote branch master from origin. 2.2.8 配置 Jenkins 与 GitLab 集成在 Jenkins 中新建流水线任务,配置 GitLab 连接 Jenkins,并完成 WebHook 的配置。 * 在 GitLab 中生成名为 jenkins 的“Access Tokens” * 返回 jenkins   * 回到 Gitlab ,复制 token * 复制后填写到此    2.2.9 构建 CI/CD 环境在流水线任务中编写流水线脚本,完成后触发构建,要求基于 GitLab 中的 项目自动完成代码编译、镜像构建与推送、并自动发布服务到 Kubernetes 集群 中。# 创建命名空间[root@k8s-master-node1 ~]# kubectl create ns springcloud* *新建流水线*    * *添加 Gitlab 用户密码*  * Harbor 仓库创建公开项目 springcloud * *返回 Gitlab 准备编写流水线* # 添加映射[root@k8s-master-node1 ~]# cat /etc/hosts192.168.59.200 apiserver.cluster.local # 选择这一行# 进入jenkins 添加映射[root@k8s-master-node1 ~]# kubectl exec -it -n devops jenkins-bbf477c4f-55vgj bashkubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.root@jenkins-bbf477c4f-55vgj:/# echo "192.168.200.59 apiserver.cluster.local" >> /etc/hostsroot@jenkins-bbf477c4f-55vgj:/# cat /etc/hosts # 查看是否成功 # 编写流水线pipeline{    agent none    stages{        stage('mvn-build'){            agent{                docker{                    image '192.168.3.10/library/maven'                    args '-v /root/.m2:/root/.m2'                }            }            steps{                sh 'cp -rvf /opt/repository /root/.m2'                sh 'mvn package -DskipTests'            }        }        stage('image-build'){            agent any            steps{                sh 'cd gateway && docker build -t 192.168.3.10/springcloud/gateway -f Dockerfile .'                sh 'cd config && docker build -t 192.168.3.10/springcloud/config -f Dockerfile .'                sh 'docker login 192.168.3.10 -u=admin -p=Harbor12345'                sh 'docker push 192.168.3.10/springcloud/gateway'                sh 'docker push 192.168.3.10/springcloud/config'            }        }        stage('cloud-deployment'){            agent any            steps{                sh 'sed -i "s/sqshq\\/piggymetrics-gateway/192.168.3.10\\/springcloud\\/gateway/g" yaml/deployment/gateway-deployment.yaml'                sh 'sed -i "s/sqshq\\/piggymetrics-config/192.168.3.10\\/springcloud\\/config/g" yaml/deployment/config-deployment.yaml'                sh 'kubectl apply -f /var/jenkins_home/workspace/springcloud/yaml/deployment/gateway-deployment.yaml'                sh 'kubectl apply -f /var/jenkins_home/workspace/springcloud/yaml/deployment/config-deployment.yaml'                sh 'kubectl apply -f /var/jenkins_home/workspace/springcloud/yaml/svc/gateway-svc.yaml'                sh 'kubectl apply -f /var/jenkins_home/workspace/springcloud/yaml/svc/config-svc.yaml'            }        }    }}stages:代表整个流水线的所有执行阶段,通常stages只有1个,里面包含多个stage。stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容。* *保存流水线文件,配置Webhook触发构建*  * *取消勾选 SSL 选择, Add webhook 创建*![](vx_images/545790416256726.png =900x) * 创建成功进行测试,成功后返回 jenkins 会发现流水线已经开始自动构建 * 流水线执行成功  # 流水线构建的项目全部运行[root@k8s-master-node1 ~]# kubectl get pod -n springcloudNAME                       READY   STATUS    RESTARTS      AGEconfig-77c74dd878-8kl4x    1/1     Running   0             28sgateway-5b46966894-twv5k   1/1     Running   1 (19s ago)   28s[root@k8s-master-node1 ~]# kubectl -n springcloud get serviceNAME      TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGEconfig    NodePort   10.96.137.40   <none>        8888:30015/TCP   4m3sgateway   NodePort   10.96.121.82   <none>        4000:30010/TCP   4m4s* *等待 PIg 微服务启动,访问 ip:30010 查看构建成功*2.2.10 服务网格:创建 Ingress Gateway将 Bookinfo 应用部署到 default 命名空间下,请为 Bookinfo 应用创建一个网 关,使外部可以访问 Bookinfo 应用。上传ServiceMesh.tar.gz包[root@k8s-master-node1 ~]# tar -zxvf ServiceMesh.tar.gz[root@k8s-master-node1 ~]# cd ServiceMesh/images/[root@k8s-master-node1 images]# docker load -i image.tar部署Bookinfo应用到kubernetes集群:[root@k8s-master-node1 images]# cd /root/ServiceMesh/[root@k8s-master-node1 ServiceMesh]# kubectl apply -f bookinfo/bookinfo.yamlservice/details createdserviceaccount/bookinfo-details createddeployment.apps/details-v1 createdservice/ratings createdserviceaccount/bookinfo-ratings createddeployment.apps/ratings-v1 createdservice/reviews createdserviceaccount/bookinfo-reviews createddeployment.apps/reviews-v1 createdservice/productpage createdserviceaccount/bookinfo-productpage createddeployment.apps/productpage-v1 created[root@k8s-master-node1 ServiceMesh]# kubectl get podNAME                              READY   STATUS    RESTARTS   AGEdetails-v1-79f774bdb9-kndm9       1/1     Running   0          7sproductpage-v1-6b746f74dc-bswbx   1/1     Running   0          7sratings-v1-b6994bb9-6hqfn         1/1     Running   0          7sreviews-v1-545db77b95-j72x5       1/1     Running   0          7s[root@k8s-master-node1 ServiceMesh]# vim bookinfo-gateway.yamlapiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata:  name: bookinfo-gatewayspec:  selector:    istio: ingressgateway  servers:  - port:      number: 80      name: http      protocol: HTTP    hosts:    - "*"---apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:  name: bookinfospec:  hosts:  - "*"    gateways:  - bookinfo-gateway  http:  - match:    - uri:        exact: /productpage    - uri:        prefix: /static    - uri:        exact: /login    - uri:        exact: /logout    - uri:        prefix: /api/v1/products    route: # 定义路由转发目的地列表    - destination:        host: productpage        port:          number: 9080[root@k8s-master-node1 ServiceMesh]# kubectl apply -f bookinfo-gateway.yamlgateway.networking.istio.io/bookinfo-gateway createdvirtualservice.networking.istio.io/bookinfo created[root@k8s-master-node1 ServiceMesh]#kubectl get VirtualService bookinfo -o yamlbookinfo-gateway || exact: /productpage || destination || host: productpage || number: 9080[root@k8s-master-node1 ServiceMesh]#kubectl get gateway bookinfo-gateway -o yamlistio: ingressgateway2.2.11 KubeVirt 运维:创建 VM使用提供的镜像在 kubevirt 命名空间下创建一台 VM,名称为 exam,指定 VM 的内存、CPU、网卡和磁盘等配置。[root@k8s-master-node1 ~]# kubectl explain kubevirt.spec. --recursive |grep use         useEmulation   <boolean>[root@k8s-master-node1 ~]# kubectl -n kubevirt edit kubevirtspec:  certificateRotateStrategy: {}  configuration:    developerConfiguration: #{}      useEmulation: true[root@k8s-master-node1 ~]# vim vm.yamlapiVersion: kubevirt.io/v1kind: VirtualMachinemetadata:  name: examspec:  running: true  template:    spec:      domain:        devices:          disks:            - name: vm              disk: {}        resources:          requests:            memory: 1Gi      volumes:        - name: vm          containerDisk:            image: fedora-virt:v1.0            imagePullPolicy: IfNotPresent[root@k8s-master-node1 ~]# kubectl apply -f vm.yamlvirtualmachine.kubevirt.io/exam created[root@k8s-master-node1 ~]# kubectl get virtualmachineNAME        AGE   STATUS    READY exam   31s   Running   True[root@k8s-master-node1 ~]# kubectl delete -f vm.yamlvirtualmachine.kubevirt.io "exam" deleted 
  • 【镜像下载失败】openEuler-22.03-LTS-everything-aarch64-dvd.iso
    链接无法下载,这个问题怎么解决?https://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS/ISO/aarch64/openEuler-22.03-LTS-everything-aarch64-dvd.iso
  • [版主交流] Volcano v1.11 重磅发布!开启AI与大数据的云原生调度新纪元
    值此2025新年之际,Volcano新版本将会是一个新的里程碑,社区将在2025年引入一系列重大特性,继续深耕CNAI(Cloud Native AI 云原生AI)和大数据等领域,主要特性包括:AI场景: 网络拓扑感知调度: 降低训练任务间的网络传输开销,优化大模型训练场景下的性能。NPU卡调度和虚拟化能力: 提升NPU资源利用率。GPU卡动态切分能力:  提供MIG与MPS动态切分能力,提升GPU资源利用率。Volcano Global多集群AI作业调度: 支持跨集群的AI任务部署与拆分。断点续训与故障恢复能力优化:  支持更细粒度的作业重启策略。支持DRA:支持动态资源分配,灵活高效的管理异构资源。大数据场景:弹性层级队列能力: 帮助用户将大数据业务丝滑迁移到云原生平台。微服务场景:在离线混部与动态资源超卖: 提升资源利用率,同时保障在线业务QoS。负载感知调度与重调度: 提供资源碎片整理和负载均衡能力。Volcano v1.11的正式发布[1],标志着云原生批量计算迈入全新阶段!本次更新聚焦AI与大数据的核心需求,推出网络拓扑感知调度、多集群AI作业调度等重磅特性,显著提升AI训练与推理任务的性能。同时,在离线混部与动态资源超卖及负载感知重调度功能进一步优化资源利用率,确保在线业务的高可用性。此外,弹性层级队列为大数据场景提供了更灵活的调度策略。Volcano v1.11不仅是技术的飞跃,更是云原生批量计算领域的全新标杆!
  • [问题求助] 容器镜像中心的镜像如何下载
    容器镜像中心的镜像如何下载
  • [问题求助] 用eSight_23.0.0_EulerOSV2R11-x86-64.iso创建云主机的时候一重复Please make a selection from the above这个提示
    用eSight_23.0.0_EulerOSV2R11-x86-64.iso创建云主机的时候一重复Please make a selection from the above这个提示
  • [技术干货] 服务器的快照和备份和镜像有什么区别?
    快照:华为云目前快照是免费的,缺点是只能手动做快照,而且如果磁盘发生变更,例如你重装系统,或者切换镜像了,那么你的快照也会丢失。云备份:云备份是付费服务,需要购买存储库,然后设置一个策略,例如你想要每天早上9:00进行一次服务器备份。优点是实现了自动化。然后可以点击恢复恢复到你选择的备份时间点的数据。全量备份和增量备份都能还原当前时间点所有服务器数据。镜像:分为系统盘镜像和服务器镜像。系统盘镜像是把你选择的磁盘打包成一个镜像,下次可以用该镜像创建磁盘。服务器镜像是指把服务器中的系统盘和数据盘一起打包起来做成一个镜像,下次可以还原服务器数据。
  • [交流反馈] 建议
    监控防护这里能更新下设置吗  就这一个选择项目  能不能向其他家那样自由选择防护防护开关 比方说  内存 硬盘 下载  还有设置监控等级 从地道到 可以参考别家  还有加速一下入库速度     速度有点慢 昨天测试的时候 一个月前的 21个样本其中有4 5个都还没入库而且双击 无反应
  • [问题求助] 离谱了
    咱们这个      华为乾坤终端什么时候能加强一下 这几天在论坛里面 双击了很多样本  用火绒查出来100多个威胁 然后用乾坤企业个人都试验了 只有10个 然后又用360查出100多个 然后卡巴斯基30多个   咱们这个查杀率是不是有点太          而且查杀出来的基本都是样本   已经感染的文件基本看不到记录     顺便希望你们软件增加内存 注册表 启动项查杀
  • [交流反馈] 新版功能建议
    新版功能建议增加云杀毒功能 能更加即使的应对新的的病毒   增加右键上传样本功能 或者app能单独设置一个界面上传增加 文件溯源 功能    能知道 病毒或者文件创建了哪些文件或者恶意行为   对未知病毒有很好的预防作用希望杀毒功能能增加 附带软件清除功能 像现在杀毒软件只能检测含有病的文件  很多病毒在安装的时候 会创建很多文件有些是有恶意行为的有些没有 杀毒软件只是把病毒杀了但是 病毒留下来的东西 我们普通用户根本找不到  希望杀毒软件能一次性清除
  • [训练管理] modelarts 跑baichuan2-13B-chat 训练作业16卡全参微调
    环境:专属资源池升级到最新版本 mindspore2.2 mindformers202309报错:/home/ma-user/anaconda3/envs/MindSpore/lib/python3.9/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero. setattr(self, word, getattr(machar, word).flat[0]) /home/ma-user/anaconda3/envs/MindSpore/lib/python3.9/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero. setattr(self, word, getattr(machar, word).flat[0]) INFO:root:Using MoXing-v2.1.16.2ae09d45-2ae09d45 INFO:root:Using OBS-Python-SDK-3.20.9.1 /home/ma-user/anaconda3/envs/MindSpore/lib/python3.9/site-packages/moxing/framework/data/protos/string_int_label_map_pb2.py:18: DeprecationWarning: Call to deprecated create function FileDescriptor(). Note: Create unlinked descriptors is going to go away. Please use get/find descriptors from generated code or query the descriptor_pool. DESCRIPTOR = _descriptor.FileDescriptor( /home/ma-user/anaconda3/envs/MindSpore/lib/python3.9/site-packages/moxing/framework/data/protos/string_int_label_map_pb2.py:36: DeprecationWarning: Call to deprecated create function FieldDescriptor(). Note: Create unlinked descriptors is going to go away. Please use get/find descriptors from generated code or query the descriptor_pool. _descriptor.FieldDescriptor( /home/ma-user/anaconda3/envs/MindSpore/lib/python3.9/site-packages/moxing/framework/data/protos/string_int_label_map_pb2.py:29: DeprecationWarning: Call to deprecated create function Descriptor(). Note: Create unlinked descriptors is going to go away. Please use get/find descriptors from generated code or query the descriptor_pool. _STRINGINTLABELMAPITEM = _descriptor.Descriptor( /home/ma-user/anaconda3/envs/MindSpore/lib/python3.9/site-packages/jieba/_compat.py:18: DeprecationWarning: pkg_resources is deprecated as an API. See cid:link_1 import pkg_resources /home/ma-user/anaconda3/envs/MindSpore/lib/python3.9/site-packages/pkg_resources/init.py:2871: DeprecationWarning: Deprecated call to pkg_resources.declare_namespace('google'). Implementing implicit namespace packages (as specified in PEP 420) is preferred to pkg_resources.declare_namespace. See cid:link_0 declare_namespace(pkg) /modelarts-job-98b7eea5-4e96-45e1-8d56-f91c3978637b/MA-CUSTOM-COMMAND.sh: line 1: 34 Segmentation fault (core dumped) python mindformers-dev/research/baichuan2/run_baichuan2.py --config=/home/ma-user/modelarts/user-job-dir/mindformers-dev/research/baichuan2/run_baichuan2_13b.yaml --run_mode=finetune --use_parallel=True --remote_save_url=obs://changan-pretrain-datas/output/mindspore_train_output/output1123 --auto_trans_ckpt=True --train_dataset=/home/ma-user/modelarts/inputs/train_dataset_0/ --load_checkpoint=/home/ma-user/modelarts/inputs/load_checkpoint_1/welink可直接联系:w84307861
  • 【ROMA】对接测试桩接口,调用roma的查看布防接口报错
    租户:hisn001开发环境:ROMA20.0、测试桩选择“服务集成 > API网关 > API授权”,单击“所属应用”,输入“华为视频分析平台测试桩”,选中搜索出的该应用并单击“确定”单击“查询”,查询“华为视频分析平台测试桩”应用下的所有接口。全部选中接口,单击“批量授权”,配置白名单信息并单击“确认”切入 华为视频分析平台 应用选择“服务集成 > Live Data > 资源管理 > 环境配置”。配置如下参数选择“服务集成 > Live Data > 资源管理 > 密码箱管理将应用中心下 视频分析平台(非测试桩)配置的密钥 设置到该制定publicsherAPpkey中,如下最后,选择“服务集成 > API网关 > API测试”。搜索“查询布防任务”,单击“测试”。​​​​结果返回为请帮忙解决下
  • [计算] 【云小课】基础服务第91课 共享镜像和复制镜像的区别与联系
    【摘要】“共享镜像”和“复制镜像”两者从字面含义上的区分较小,不易理解。但实际上“共享镜像”和“复制镜像”是镜像服务两个重要且不同的功能,在跨区域跨账号复制镜像时,还需要联合两者使用。本节课程详细介绍下两者之间的区别和联系。什么是共享镜像?共享镜像是指在同一区域内,将自己已经创建好的私有镜像共享给其他用户使用。共享后,接受者可以使用该共享镜像快速创建同一镜像环境的云服务器。镜像共享流程图如下:什么是复制镜像?复制镜像分为区域内复制镜像和跨区域复制镜像。区域内复制镜像:用户可以通过区域内复制镜像功能实现加密镜像与非加密镜像的转换,或者使镜像具备一些高级特性(如快速发放)。跨区域复制镜像:镜像是一种区域性资源,私有镜像归属于其被创建时的区域,如果需要在其他区域使用某一私有镜像,需要通过跨区域复制镜像功能实现。跨区域复制镜像场景示意图如下:共享镜像和复制镜像的区别与联系操作类型操作场景说明共享镜像适用于同区域跨帐号共享镜像,镜像提供者共享指定的镜像给在同一区域内的其他帐号使用。共享镜像不会生成新的镜像,接受者所看到的镜像和源镜像拥有相同的ID。镜像所有者仍为共享者。区域内复制镜像适用于同区域同帐号复制镜像,有以下场景: 加密镜像复制为非加密镜像,可将自己的加密镜像发布为市场镜像或共享给某个租户。 加密镜像复制为加密镜像,可为自己的加密镜像更换加密密钥。 非加密镜像复制为加密镜像,可将原有的非加密镜像复制为新的加密私有镜像。 优化系统盘镜像使其支持云服务器快速发放。实现加密镜像与非加密镜像的转换,或者使镜像具备一些高级特性(如快速发放)。跨区域复制镜像适用于跨区域同帐号复制镜像,将一个镜像复制到多个目标区域,然后使用私有镜像快速部署云服务器。复制完成后,目标区域会生成新的镜像,且新镜像具有唯一的ID。跨区域复制、共享镜像适用于跨区域复制镜像到目标区域后,再将镜像共享给其他帐号使用。/支持跨区域复制系统盘镜像和数据盘镜像的区域有哪些?“√”表示支持跨区域复制镜像。“×”表示不支持跨区域复制镜像,可手动在A区域做镜像导出,再将其导入到B区域。“-”表示相同区域不涉及跨区域复制镜像。图中未包含的区域,不支持跨区域复制系统盘镜像和数据盘镜像。
  • [其他] 我真的傻了,
    我还真的去输入想要创作的第一个进去了,真的是无语
  • [其他问题] 鲲鹏服务器如何从18.04升级到20.04
    鲲鹏服务器如何从18.04升级到20.04
  • [其他问题] ascend-infer镜像密码多少
    https://ascendhub.huawei.com/#/detail/ascend-infer下载的镜像,修改HwHiAiUser密码的时候试过Admin@123,Mind@123,admin@huawei.com都不是,请问这个镜像的密码是多少?