WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

k3s or minikube 简单版基础环境部署记录

k3s 安装

1
2
3
4
5
6
7
8
9
10
# 从k3s官方代码库下载编译好的k3s,https://github.com/rancher/k3s/releases/latest
$ 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 -
# 启动k3s
$ sudo k3s server &
# 配置kubectl的配置文件
$ ln -s /etc/rancher/k3s/k3s.yaml ~/.kube/config
# nginx负载均衡到集群
## 暂时没有搞清楚

minikube 安装

安装过程参考官方文档,我采用了VirtualBox(已经切换成kvm了)作为后端的方式进行部署,相关命令参考此处(更新到此处),此处主要是在改进fission的过程中,使用的集群部署相关命令,包含一些基础环境的安装,比较的方便。

常用命令安装

1
2
3
4
5
6
# 安装 helm3
$ 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
# 安装 kubectl
$ 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
# 安装 fission
$ 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
# 部署fission
$ 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
## 代理prometheus
$ kubectl --namespace $FISSION_NAMESPACE port-forward service/fission-prometheus-server 9090:80 --address 0.0.0.0
# 部署kafka
$ 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
# 部署grafana
$ 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
## grafana 查看admin密码
$ kubectl get secret --namespace $GRAFANA_NAMESPACE fission-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
## grafana 代理到本机
$ 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
# 查看topic
$ kubectl -n kafka-dev exec testclient -- kafka-topics --zookeeper \
kafka-dev-zookeeper.kafka-dev:2181 --list
# 创建topic
$ kubectl -n kafka-dev exec testclient -- kafka-topics --zookeeper \
kafka-dev-zookeeper.kafka-dev:2181 --topic ${topic_name} --create --partitions 1 \
--replication-factor 1
# 监听topic中的消息
$ kubectl -n kafka-dev exec -ti testclient -- kafka-console-consumer \
--bootstrap-server kafka-dev.kafka-dev:9092 --topic ${topic_name} \
--from-beginning
# 向topic中发送消息
$ kubectl -n kafka-dev exec -ti testclient -- kafka-console-producer \
--broker-list kafka-dev-headless.kafka-dev:9092 --topic ${topic_name}
# 查看consumer
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官网