k3s 安装
1 2 3 4 5 6 7 8 9 10
| $ wget https://github.com/rancher/k3s/releases/download/v1.18.4%2Bk3s1/k3s && chmod +x k3s && mv k3s /usr/local/bin/
curl -sfL https://get.k3s.io | sh -
$ sudo k3s server &
$ ln -s /etc/rancher/k3s/k3s.yaml ~/.kube/config
|
minikube 安装
安装过程参考官方文档,我采用了VirtualBox(已经切换成kvm了)作为后端的方式进行部署,相关命令参考此处(更新到此处),此处主要是在改进fission的过程中,使用的集群部署相关命令,包含一些基础环境的安装,比较的方便。
常用命令安装
1 2 3 4 5 6
| $ wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz && tar -zxvf helm-v3.2.4-linux-amd64.tar.gz && mv linux-amd64/helm /usr/local/bin/helm
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl && mv kubectl /usr/local/bin/ && chmod +x /usr/local/bin/kubectl
$ curl -Lo fission https://github.com/fission/fission/releases/download/1.9.0/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/
|
k3s默认需要的持久卷都是存储在HostPath上,且是自动创建的,对于测试环境而言十分的方便。
服务部署
参考此处,更方便的helm部署,包括fission、prometheus和grafana,以及自动化配置本地持久卷和快速代理集群中的相关服务到本地端口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ export FISSION_NAMESPACE="fission" && kubectl create namespace $FISSION_NAMESPACE && helm install --namespace $FISSION_NAMESPACE --name-template fission --set analytics=false,kafka.enabled=true,kafka.brokers=kafka.fission-base:9092,kafka.version=5.0.1 https://github.com/fission/fission/releases/download/1.9.0/fission-all-1.9.0.tgz
$ kubectl --namespace $FISSION_NAMESPACE port-forward service/fission-prometheus-server 9090:80 --address 0.0.0.0
$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator $ export KAFKA_NAMESPACE="kafka-dev" && kubectl create namespace $KAFKA_NAMESPACE && helm install --name-template kafka --namespace kafka-dev incubator/kafka
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com $ export GRAFANA_NAMESPACE="fission" && helm install --namespace $GRAFANA_NAMESPACE --name-template fission-grafana stable/grafana --version 5.2.0 --set persistence.enabled=true
$ kubectl get secret --namespace $GRAFANA_NAMESPACE fission-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
$ export POD_NAME=$(kubectl get pods --namespace $GRAFANA_NAMESPACE -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=fission-grafana" -o jsonpath="{.items[0].metadata.name}") $ kubectl --namespace $GRAFANA_NAMESPACE port-forward $POD_NAME 3000 --address 0.0.0.0
|
运维
kafka
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| topic_name=jingtao-test-1
$ kubectl -n kafka-dev exec testclient -- kafka-topics --zookeeper \ kafka-dev-zookeeper.kafka-dev:2181 --list
$ kubectl -n kafka-dev exec testclient -- kafka-topics --zookeeper \ kafka-dev-zookeeper.kafka-dev:2181 --topic ${topic_name} --create --partitions 1 \ --replication-factor 1
$ kubectl -n kafka-dev exec -ti testclient -- kafka-console-consumer \ --bootstrap-server kafka-dev.kafka-dev:9092 --topic ${topic_name} \ --from-beginning
$ kubectl -n kafka-dev exec -ti testclient -- kafka-console-producer \ --broker-list kafka-dev-headless.kafka-dev:9092 --topic ${topic_name}
kubectl --context dev-cluster -n kafka-dev exec -ti testclient -- \ kafka-consumer-groups --bootstrap-server kafka-dev.kafka-dev:9092 --list
|
遇到的问题
在minikube中使用本地编译的镜像会出现pull失败的情况
解决办法:将拉取镜像的策略更改成never就会使用本地的镜像
资源
Rancher k3s文档
k3s官网