【daily updating】k3s kubeedge + opendFaas搭建教程 —— 欢迎交流

2024-02-08 12:04

本文主要是介绍【daily updating】k3s kubeedge + opendFaas搭建教程 —— 欢迎交流,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OpenFaas从入门到实战 – 踩坑指南 | k3d+OpenFaas | deploy your first python function

https://blog.alexellis.io/first-faas-python-function/

https://docs.openfaas.com/deployment/kubernetes/

搭建环境:第一种方法失败,第二种方法亲测有效嘻嘻嘻,其实我大概知道原因,但先不细究了

1. VM: K3s + OpenFaas on Mac

参考教程:https://midnightprogrammer.net/post/installing-openfaas-on-k3s-single-node/

MacBook Pro

使用 Multipass 来创建一个 VM:需要 4GB 内存和 8GB 磁盘,记得要分配多一点 - 我暂定的

beatles@biantongshusMBP ~ % multipass launch --name k3s --memory 4G --disk 8G 
Launched: k3s

等待 VM 创建,然后为 VM 启动一个 shell

multipass shell k3s

安装 k3s

curl -sfL https://get.k3s.io | sh -

After the installation is completed, you can check if the k3s service is running by executing the below command.

sudo systemctl status k3s

image-20240103190034976

​ 亲测无效,遂脚本自动安装:

curl -SLsf https://dl.get.arkade.dev/ | sudo sh

image-20240104190355723

谁说用着个很简单,总之我还自己凑了两个命名空间

arkade install openfaas

然后就是这样

Release "openfaas" has been upgraded. Happy Helming!
NAME: openfaas
LAST DEPLOYED: Thu Jan  4 19:51:37 2024
NAMESPACE: openfaas
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
To verify that openfaas has started, run:kubectl -n openfaas get deployments -l "release=openfaas, app=openfaas"To retrieve the admin password, run:echo $(kubectl -n openfaas get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode)
2024/01/04 19:51:42 stderr: WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/ubuntu/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/ubuntu/.kube/config=======================================================================
= OpenFaaS has been installed.                                        =
=======================================================================# Get the faas-cli
curl -SLsf https://cli.openfaas.com | sudo sh# Forward the gateway to your machine
kubectl rollout status -n openfaas deploy/gateway
kubectl port-forward -n openfaas svc/gateway 8080:8080 &# If basic auth is enabled, you can now log into your gateway:
PASSWORD=$(kubectl get secret -n openfaas basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode; echo)
echo -n $PASSWORD | faas-cli login --username admin --password-stdinfaas-cli store deploy figlet
faas-cli list# For Raspberry Pi
faas-cli store list \--platform armhffaas-cli store deploy figlet \--platform armhf# Find out more at:
# https://github.com/openfaas/faas🚀 Speed up GitHub Actions/GitLab CI + reduce costs: https://actuated.dev

check the rollout status of the gateway, After this we can forward the gateway to the machine.

ubuntu@k3s:/etc/rancher/k3s$ kubectl get pod -n openfaas
NAME                            READY   STATUS    RESTARTS      AGE
nats-5c48bc8b46-zksff           1/1     Running   2 (12m ago)   73m
alertmanager-795bbdc56c-6qwpn   1/1     Running   2 (12m ago)   73m
prometheus-78d4c9f748-smjfr     1/1     Running   2 (12m ago)   73m
queue-worker-b9965cc56-bn47b    1/1     Running   6 (12m ago)   73m
gateway-67df8c4d4-jfkbf         2/2     Running   0             73m
ubuntu@k3s:/etc/rancher/k3s$ kubectl rollout status -n openfaas deploy/gateway
deployment "gateway" successfully rolled out
ubuntu@k3s:/etc/rancher/k3s$ kubectl port-forward -n openfaas svc/gateway 8080:8080 &
[1] 4737
ubuntu@k3s:/etc/rancher/k3s$ Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
jobs
[1]+  Running                 kubectl port-forward -n openfaas svc/gateway 8080:8080 &
ubuntu@k3s:/etc/rancher/k3s$ 

You can then view the password by printing the value of the PASSWORD variable using the echo command. 反正报错需要等一会儿就好了

ubuntu@k3s:/etc/rancher/k3s$ echo $PASSWORD
oJPdijCZF2Dd

192.168.64.1

http://localhost:31112/ui
http://127.0.0.1:31112/ui

2. Docker: K3d + OpenFaas

参考教程(版本较老,于是我自己做了一些记录):https://mickey.dev/posts/getting-started-with-openfaas/#:~:text=Configure%20faas%2Dcli%20%26%20Login%20to%20the%20OpenFaaS%20Dashboard&text=Open%20a%20browser%20and%20navigate,for%20a%20username%20and%20password.

brew install k3d

Create a cluster named mycluster with just a single server node

k3d cluster create mycluster

You can now use it like this:

kubectl cluster-info

image-20240105215327074

事实上,这句话并没有什么用

export KUBECONFIG="$(k3d kubeconfig get --name='k3s-default')"export KUBECONFIG="$(k3d kubeconfig get --all)"

To install OpenFaaS to your k3d cluster, start by cloning the https://github.com/openfaas/faas-netesrepo:

git clone https://github.com/openfaas/faas-netes.git
cd faas-netes

Install the namespaces:

kubectl apply -f namespaces.yml

This will create two namespaces in your cluster:

openfaas - Which will hold the OpenFaaS cluster services (AKA. ‘Control Plane”).
openfaas-fn - Stores the functions you deploy to OpenFaaS.

Create a password for the OpenFaaS Gateway and add it as a secret into the cluster. The below commands will generate a random password and add the secret:

beatles@biantongshus-MacBook-Pro faas-netes % export PASSWORD=$(head -c 12 /dev/urandom | shasum| cut -d' ' -f1)beatles@biantongshus-MacBook-Pro faas-netes % kubectl -n openfaas create secret generic basic-auth \
--from-literal=basic-auth-user=admin \
--from-literal=basic-auth-password="$PASSWORD"
secret/basic-auth created
beatles@biantongshus-MacBook-Pro faas-netes % 

Now deploy the OpenFaaS stack:

kubectl apply -f ./yaml

Install the faas-cli

The next step is installing the faas-cli. If you’re on MacOS and already have homebrew install then installation is as simple as:

brew install faas-cli

Configure faas-cli & Login to the OpenFaaS Dashboard

Configure the faas-cli to use your local OpenFaaS cluster by using the faas-cli login command. If running k3d you’ll need to forward the gateway service port and set the OPENFAAS_URL environment variable:

kubectl port-forward svc/gateway -n openfaas 31112:8080 &
export OPENFAAS_URL=http://127.0.0.1:31112
echo $PASSWORD | faas-cli login --password-stdin

Open a browser and navigate to http://localhost:31112 to load the UI. The UI will prompt for a username and password. The default username is admin and the password is the one you specified in the deployment instructions above, you can print this to your console using echo $PASSWORD.

echo $PASSWORD
681d0e42c1506c260eba6cc73ad61b3330276302

image-20240106121621039

Cheers!!

再次登陆

http://localhost:31112/

export PASSWORD=681d0e42c1506c260eba6cc73ad61b3330276302
kubectl port-forward svc/gateway -n openfaas 31112:8080 &
export OPENFAAS_URL=http://127.0.0.1:31112
echo $PASSWORD | faas-cli login --password-stdin

就好了

3. Deploy New Functions

3.1 bug1: terminal 443: connect: connection refused

faas-cli template store list
Error while getting templates info: error while requesting template list: Get "https://raw.githubusercontent.com/openfaas/store/master/templates.json": dial tcp [::]:443: connect: connection refused

祈祷:http://grayblog.cn/2020/07/18/解决Mac中Terminal无法访问github/

IP Lookup : 140.82.113.3 (github.com)
sudo vi /etc/hosts
140.82.113.3 www.github.com 

他的ipaddress有好多,我就放了第一个https://www.ipaddress.com/ip-lookup

185.199.109.133 raw.githubusercontent.com

终于!!!不行的话再来一遍

beatles@biantongshusMBP ~ % faas-cli template store listNAME                     RECOMMENDED DESCRIPTION        SOURCE
bash-streaming           [x]         openfaas-incubator Bash Streaming template
dockerfile               [x]         openfaas           Classic Dockerfile template
golang-middleware        [x]         openfaas           HTTP middleware interface in Go
java11-vert-x            [x]         openfaas           Java 11 Vert.x template
node18                   [x]         openfaas           HTTP-based Node 18 template
php8                     [x]         openfaas           Classic PHP 8 template
python3-http             [x]         openfaas           Python 3 with Flask and HTTP
python3-http-debian      [x]         openfaas           Python 3 with Flask and HTTP based on Debian
ruby-http                [x]         openfaas           Ruby 2.4 HTTP template
cobol                    [ ]         devries            COBOL Template
crystal                  [ ]         tpei               Crystal template
crystal-http             [ ]         koffeinfrei        Crystal HTTP template
csharp-httprequest       [ ]         distantcam         C# HTTP template
csharp-kestrel           [ ]         burtonr            C# Kestrel HTTP template
lua53                    [ ]         affix              Lua 5.3 Template
perl-alpine              [ ]         tmiklas            Perl language template based on Alpine image
quarkus-native           [ ]         pmlopes            Quarkus.io native image template
rust                     [ ]         openfaas-incubator Community Rust template
rust-http                [ ]         openfaas-incubator Community Rust template with HTTP bindings
swift                    [ ]         affix              Swift 4.2 Template
vala                     [ ]         affix              Vala Template
vala-http                [ ]         affix              Non-Forking Vala Template
vertx-native             [ ]         pmlopes            Eclipse Vert.x native image template
bun-express              [ ]         openfaas           HTTP-based template using bun
csharp                   [ ]         openfaas           Classic C# template
go                       [ ]         openfaas           Legacy Golang template
golang-http              [ ]         openfaas           Request/response style HTTP template
java11                   [ ]         openfaas           Java 11 template
node                     [ ]         openfaas           Legacy Node 12 template
node12                   [ ]         openfaas           HTTP-based Node 12 template
node14                   [ ]         openfaas           HTTP-based Node 14 template
node16                   [ ]         openfaas           HTTP-based Node 16 template
node17                   [ ]         openfaas           HTTP-based Node 17 template
php7                     [ ]         openfaas           Classic PHP 7 template
powershell-http-template [ ]         openfaas-incubator Powershell Core HTTP Ubuntu:16.04 template
powershell-template      [ ]         openfaas-incubator Powershell Core Ubuntu:16.04 template
puppeteer-nodelts        [ ]         alexellis          A puppeteer template for headless Chrome
python                   [ ]         openfaas           Classic Python 2.7 template
python27-flask           [ ]         openfaas           Python 2.7 Flask template
python3                  [ ]         openfaas           Classic Python 3 template
python3-debian           [ ]         openfaas           Python 3 Debian template
python3-flask            [ ]         openfaas           Python 3 Flask template
python3-flask-debian     [ ]         openfaas           Python 3 Flask template based on Debian
ruby                     [ ]         openfaas           Classic Ruby 2.5 template

3.2 部署函数

faas-cli up --gateway=http://localhost:31112

faas-cli build -f ./cpu.yml
faas-cli deploy -f ./cpu.yml --gateway=http://localhost:31112

当然了,探索出过程很痛苦,我把我提的github issue挂在这里 https://github.com/openfaas/faas/issues/1831

事到如今,踩坑真得靠自己了

[0] < Building float-operation done in 104.36s.
[0] Worker done.Total build time: 104.36s
Deploying: float-operation.Is OpenFaaS deployed? Do you need to specify the --gateway flag?
Put "http://127.0.0.1:8080/system/functions": dial tcp 127.0.0.1:8080: connect: connection refusedFunction 'float-operation' failed to deploy with status code: 500
beatles@biantongshusMBP openfaas % faas-cli logs float-operation
Cannot connect to OpenFaaS on URL: http://127.0.0.1:8080

排错:

kubectl get service -n openfaas
faas-cli deploy -f ./cpu.yml --gateway=http://localhost:31112

最终成功

beatles@biantongshusMBP openfaas % faas-cli login --username admin --password=681d0e42c1506c260eba6cc73ad61b3330276302 --gateway=http://localhost:31112WARNING! Using --password is insecure, consider using: cat ~/faas_pass.txt | faas-cli login -u user --password-stdin
Calling the OpenFaaS server to validate the credentials...
credentials saved for admin http://localhost:31112
beatles@biantongshusMBP openfaas % faas-cli deploy -f ./cpu.yml --gateway=http://localhost:31112
Deploying: float-operation.Deployed. 202 Accepted.
URL: http://localhost:31112/function/float-operationbeatles@biantongshusMBP openfaas % 

3.1 python

faas-cli template store pull python3-http
faas-cli new float-operation --lang python3-http 

部署函数

faas-cli up --gateway=http://localhost:31112

faas-cli build -f ./cpu.yml
faas-cli deploy -f ./cpu.yml --gateway=http://localhost:31112

Not Ready

beatles@biantongshusMBP openfaas % kubectl get deploy -n openfaas-fn
NAME              READY   UP-TO-DATE   AVAILABLE   AGE
float-operation   0/1     1            0           5h36m
beatles@biantongshusMBP openfaas % kubectl describe -n openfaas-fn deploy/float-oper
ation
Name:                   float-operation
Namespace:              openfaas-fn
CreationTimestamp:      Thu, 25 Jan 2024 12:34:41 +0800
Labels:                 faas_function=float-operation
Annotations:            deployment.kubernetes.io/revision: 1prometheus.io.scrape: false
Selector:               faas_function=float-operation
Replicas:               1 desired | 1 updated | 1 total | 0 available | 1 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  0 max unavailable, 1 max surge
Pod Template:Labels:       faas_function=float-operationAnnotations:  prometheus.io.scrape: falseContainers:float-operation:Image:      float-operation:latestPort:       8080/TCPHost Port:  0/TCPLiveness:   http-get http://:8080/_/health delay=2s timeout=1s period=2s #success=1 #failure=3Readiness:  http-get http://:8080/_/health delay=2s timeout=1s period=2s #success=1 #failure=3Environment:fprocess:  python index.pyMounts:      <none>Volumes:       <none>
Conditions:Type           Status  Reason----           ------  ------Available      False   MinimumReplicasUnavailableProgressing    False   ProgressDeadlineExceeded
OldReplicaSets:  <none>
NewReplicaSet:   float-operation-bfd748bd6 (1/1 replicas created)
Events:          <none>
beatles@biantongshusMBP openfaas % 

排错过程:

beatles@biantongshusMBP openfaas % kubectl get deploy -n openfaas-fn
NAME              READY   UP-TO-DATE   AVAILABLE   AGE
float-operation   0/1     1            0           5h36mbeatles@biantongshusMBP openfaas % kubectl logs -n openfaas-fn deploy/float-operation
Error from server (BadRequest): container "float-operation" in pod "float-operation-bfd748bd6-4r67p" is waiting to start: trying and failing to pull imagebeatles@biantongshusMBP openfaas % kubectl get events -n openfaas-fn \--sort-by=.metadata.creationTimestamp
LAST SEEN   TYPE      REASON    OBJECT                                MESSAGE
31m         Normal    Pulling   pod/float-operation-bfd748bd6-p885q   Pulling image "float-operation:latest"
37m         Warning   Failed    pod/float-operation-bfd748bd6-p885q   Failed to pull image "float-operation:latest": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/float-operation:latest": failed to resolve reference "docker.io/library/float-operation:latest": pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
37m         Warning   Failed    pod/float-operation-bfd748bd6-p885q   Error: ErrImagePull
3m28s       Normal    BackOff   pod/float-operation-bfd748bd6-p885q   Back-off pulling image "float-operation:latest"beatles@biantongshusMBP ~ % docker pull float-operation:latest
Error response from daemon: pull access denied for float-operation, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

https://docs.openfaas.com/deployment/kubernetes/

于是我准备先学一下docker: https://www.youtube.com/watch?v=pg19Z8LL06w

Kubeedge

multipass launch --name kubeedge_0 --memory 4G --disk 8G 

这篇关于【daily updating】k3s kubeedge + opendFaas搭建教程 —— 欢迎交流的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/690978

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖: