searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Kubevela Quick Start

2023-08-28 07:14:36
4
0

Kubevela是OAM规范的一个实现,以下基于MAC来快速安装和体验。

一、安装minikube

遵循 minikube的安装指南进行安装

二、安装helm

通过brew安装,尽量安装最新的Helm3版本

brew install helm
% helm version
version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"dirty", GoVersion:"go1.16.6"}
三、安装kubevela
1、使用镜像启动minikube

registry-mirror配置对接镜像加速:

minikube start --vm=true --registry-mirror=koqjpu74.mirror.xx.xx --image-repository=registry.xx-hangzhou.xx.xx/google_containers 
😄 Darwin 10.15.1 上的 minikube v1.18.1

  ▪ MINIKUBE_ACTIVE_DOCKERD=minikube

✨ 根据现有的配置文件使用 hyperkit 驱动程序

👍 Starting control plane node minikube in cluster minikube

🔄 Restarting existing hyperkit VM for "minikube" ...

🐳 正在 Docker 20.10.3 中准备 Kubernetes v1.20.2…

🔎 Verifying Kubernetes components...

  ▪ Using image registry.xx-hangzhou.xx.xx/google_containers/k8s-minikube/storage-provisioner:v4 (global image repository)

🌟 Enabled addons: default-storageclass, storage-provisioner

🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
2、启动ingress
minikube addons enable ingress

查看安装的pod是否正常

% kubectl get pod -A                              

NAMESPACE   NAME                    READY  STATUS   RESTARTS  AGE

kube-system  coredns-54d67798b7-v575p          1/1   Running   2     36m

kube-system  etcd-minikube                1/1   Running   2     37m

kube-system  ingress-nginx-admission-create-nlbbn    0/1   Completed  0     4h45m

kube-system  ingress-nginx-admission-patch-xkzbc     0/1   Completed  0     4h45m

kube-system  ingress-nginx-controller-745945f89d-b42bm  1/1   Running   0     4m16s

kube-system  kube-apiserver-minikube           1/1   Running   2     37m

kube-system  kube-controller-manager-minikube      1/1   Running   2     37m

kube-system  kube-proxy-4jmsh              1/1   Running   2     36m

kube-system  kube-scheduler-minikube           1/1   Running   2     37m

kube-system  storage-provisioner             1/1   Running   9     4h48m
3、遇到的镜像问题:

storage-provisioner镜像拉取失败,原因是里面的和minikube使用的名称不一致。

kubectl describe查看pod

Normal  SandboxChanged 5m32s          kubelet Pod sandbox changed, it will be killed and re-created.

 Normal  Pulling     4m (x4 over 5m31s)   kubelet Pulling image "registry.xx-hangzhou.xx.xx/google_containers/k8s-minikube/storage-provisioner:v4"

 Warning Failed     4m (x4 over 5m24s)   kubelet Failed to pull image "registry.xx-hangzhou.xx.xx/google_containers/k8s-minikube/storage-provisioner:v4": rpc error: code = Unknown desc = Error response from daemon: pull access denied for registry.xx-hangzhou.aliyuncs.xx/google_containers/k8s-minikube/storage-provisioner, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

 Warning Failed     4m (x4 over 5m24s)   kubelet Error: ErrImagePull

 Warning Failed     3m31s (x6 over 5m23s)  kubelet Error: ImagePullBackOff

 Normal  BackOff     12s (x20 over 5m23s)  kubelet Back-off pulling image "registry.xx-hangzhou.xx.xx/google_containers/k8s-minikube/storage-provisioner:v4"

处理办法,通docker pull后把tag改成minikube要求的名称

docker pull registry.xx-hangzhou.aliyuncs.xx/google_containers/storage-provisioner:v4

 docker tag registry.xx-hangzhou.aliyuncs.xx/google_containers/storage-provisioner:v4 registry.xx-hangzhou.xx.xx/google_containers/k8s-minikube/storage-provisioner:v4

#删除,可不执行 

docker rmi registry.xx-hangzhou.xx.xx/google_containers/storage-provisioner:v4

ingress-nginx镜像同样也这么处理:

docker pull registry.xx-hangzhou.xx.xx/google_containers/nginx-ingress-controller:v0.40.2

docker tag registry.xx-hangzhou.xx.xx/google_containers/nginx-ingress-controller:v0.40.2 registry.xx-hangzhou.xx.xx/google_containers/controller:v0.40.2
4、安装kubevela
添加仓库
helm repo add kubevela charts.kubevela.net/core
更新
helm repo update
安装kubevela
helm install --create-namespace -n vela-system kubevela kubevela/vela-core

NAME: kubevela

LAST DEPLOYED: Sat Sep 4 23:18:36 2021

NAMESPACE: vela-system

STATUS: deployed

REVISION: 1

NOTES:

Welcome to use the KubeVela! Enjoy your shipping application journey!

安装一个vela app

kubectl apply -f raw.githubusercontent.xx/oamdev/kubevela/master/docs/examples/vela-app.yaml

raw.githubusercontent.xx折腾连不上,到github中clone kubevela源码到本地搞。

kubectl apply -f /Users/vinin/codes/go/kubevela/docs/examples/vela-app.yaml

application.core.oam.dev/first-vela-app created

kubectl get application first-vela-app -o yaml

检查状态:直到看到 status 是 running,并且services 是 healthy

apiVersion: core.oam.dev/v1beta1

kind: Application

metadata:

 annotations:

  kubectl.kubernetes.io/last-applied-configuration: |

   {"apiVersion":"core.oam.dev/v1beta1","kind":"Application","metadata":{"annotations":{},"name":"first-vela-app","namespace":"default"},"spec":{"components":[{"name":"express-server","properties":{"image":"crccheck/hello-world","port":8000},"traits":[{"properties":{"domain":"testsvc.example.xx","http":{"/":8000}},"type":"ingress-1-20"}],"type":"webservice"}]}}

  oam.dev/kubevela-version: v1.1.0

 creationTimestamp: "2021-09-04T15:23:47Z"

 finalizers:

 \- app.oam.dev/resource-tracker-finalizer

 generation: 1

 name: first-vela-app

 namespace: default

 resourceVersion: "6454"

 uid: fddaa151-5773-438e-ab39-3ff90b75be78

spec:

 components:

 \- name: express-server

  properties:

   image: crccheck/hello-world

   port: 8000

  traits:

  \- properties:

    domain: testsvc.example.xx

    http:

     /: 8000

   type: ingress-1-20

  type: webservice

status:

 conditions:

 \- lastTransitionTime: "2021-09-04T15:23:47Z"

  reason: Available

  status: "True"

  type: Parsed

 \- lastTransitionTime: "2021-09-04T15:23:47Z"

  reason: Available

  status: "True"

  type: Revision

 \- lastTransitionTime: "2021-09-04T15:23:47Z"

  reason: Available

  status: "True"

  type: Render

 \- lastTransitionTime: "2021-09-04T15:23:48Z"

  reason: Available

  status: "True"

  type: Applied

 \- lastTransitionTime: "2021-09-04T15:23:48Z"

  reason: Available

  status: "True"

  type: HealthCheck

 latestRevision:

  name: first-vela-app-v1

  revision: 1

  revisionHash: 7fa5efd7492f9e40

 observedGeneration: 1

 rollout:

  batchRollingState: ""

  currentBatch: 0

  lastTargetAppRevision: ""

  rollingState: ""

  upgradedReadyReplicas: 0

  upgradedReplicas: 0

 services:

 \- healthy: true

  name: express-server

  traits:

  \- healthy: true

   message: |

    No loadBalancer found, visiting by using 'vela port-forward first-vela-app --route'

   type: ingress-1-20

  workloadDefinition:

   apiVersion: apps/v1

   kind: Deployment

 status: running
检查在k8s中创建的资源
% kubectl get deployment

NAME       READY  UP-TO-DATE  AVAILABLE  AGE
express-server  1/1   1      1      2m17s

 % kubectl get svc

NAME       TYPE    CLUSTER-IP    EXTERNAL-IP  PORT(S)  AGE
express-server  ClusterIP  10.106.163.253  <none>    8000/TCP  2m39s
kubernetes    ClusterIP  10.96.0.1    <none>    443/TCP  5h21m

% kubectl get ingress

NAME       CLASS  HOSTS         ADDRESS    PORTS  AGE
express-server  <none>  testsvc.example.xx  192.168.64.3  80   2m56s

测试vela app (express helloworld)是否已经正确安装

% curl -H "Host:testsvc.example.xx" http://192.168.64.3
Hello World

                                       ##         .

                                 ## ## ##        ==

                              ## ## ## ## ##    ===

                           /""""""""""""""""\___/ ===

                      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~

                           \______ o          _,/

                            \      \       _,'

                             `'--.._\..--''
四、安装kubevela客户端
curl -fsSl kubevela.io/script/install.sh | bash

使用vela cli:

% vela components
NAME   NAMESPACE WORKLOAD        DESCRIPTION                         

raw    vela-system autodetects.core.oam.dev raw allow users to specify raw K8s object in properties   

task   vela-system jobs.batch       Describes jobs that run code or a script to completion.   

webservice vela-system deployments.apps    Describes long-running, scalable, containerized services   

                       that have a stable network endpoint to receive external   

                       network traffic from customers.               

worker  vela-system deployments.apps    Describes long-running, scalable, containerized services   

                       that running at backend. They do NOT have network endpoint  

                       to receive external network traffic.  

0条评论
0 / 1000