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

Kubevela Quick Start

2023-08-28 15:14:36
9
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条评论
作者已关闭评论
chuoo
13文章数
0粉丝数
chuoo
13 文章 | 0 粉丝
原创

Kubevela Quick Start

2023-08-28 15:14:36
9
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
0