BlueShift 인스턴스(PEC-C5, PEC-C3)를 생성합니다.
서버/인스턴스 설명
RaspberryPi 센서가 장착된 서버활용
BlueShift ALTRA-C1 Edge 컴퓨팅 서비스 서버활용
BlueShift PEC-C5 K8S 마스터 서버활용
BlueShift PEC-C3 (x2) K8S 워커 서버활용
생성된 모든 인스턴스에 아래와 같이 도커 및 쿠버네티스를 설치합니다.
sudo apt update; sudo apt upgrade -y
sudo su
git clone https://yona.xslab.co.kr/Programmers/1st-KDT-Linux
cd 1st-KDT-Linux/k8s
실습 다운로드
sudo apt update; sudo apt upgrade -y
sudo su
git clone https://yona.xslab.co.kr/Programmers/1st-KDT-Linux
cd 1st-KDT-Linux/k8s
실행파일 권한설정
chmod +x docker-install.sh
chmod +x k8s-install-setup.sh
sudo ./docker-install.sh
sudo ./k8s-install-setup.sh
마스터노드 클러스터 생성
MASTER_IP=
hostname -I | awk '{print $1}'
echo {MASTER_IP}" --pod-network-cidr "10.244.0.0/16"
mkdir -p HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):(id -g) $HOME/.kube/config
워커 노드에 접속하고, 워커 노드를 마스터 노드에 등록합니다
kubeadm join 172.16.10.45:6443 --token a4u23i.4v7q7vjp0wqy16b8 \
--discovery-token-ca-cert-hash sha256:f821f9f4e2e8d99ee77d63c49c95ba5285f0886b6e522395684742603339b31d
마스터 노드에서 PV(영구 볼륨)생성에 필요한 스토리지 클래스를 생성한 후 확인합니다.
cd ~/1st-KDT-Linux/k8s
kubectl apply -f local-path-storage.yaml
kubectl get storageclass
마스터 노드에서 Rabbitmq의 Deployment, Service를 생성합니다
kubectl apply -f rabbitmq.yaml
kubectl get all
마스터 노드에서 influxdb의 Deployment, Service,Pvc 를 생성합니다.
kubectl apply -f influxdb.yaml
kubectl get all
kubectl get pvc
kubectl get pv
influxdb의 파드가 다음과 같이 Pending 상태 일 때
kubectl get pvc를 실행해서 PVC의 상태를 확인합니다.
PVC의 상태가 Pending 상태라면 kubectl get storageclass를 실행해서 스토리지 클래스가 생성되어있는지 확인합니다.
kubectl delete -f influxdb.yaml, kubectl delete pvc influxdb-data-influxdb-0 로 PVC를 삭제합니다.
kubectl apply -f local-path-storage.yaml로 스토리지 클래스를 생성합니다.
kubectl apply -f influx.yaml 를 진행합니다.
service/influxdb의 ClusterIP를 확인 한 후 telegraf.yaml를 수정합니다.
kubectl get all
vim telegraf.yaml
-> ConfigMap에서 [[outpusts.influxdb]]섹션에서 url을 "http://<service/influxdb의 ClusterIP>:8086" 으로 변환합니다.
마스터 노드에서 telegraf의 Deployment, Service 를 생성합니다.
kubectl apply -f telegraf.yaml
kubectl get all
kubectl logs telegraf-<컨테이너 이름>
마스터 노드에서 IP 및 MQTT 통신포트 확인합니다.
ip a
kubectl get all
엣지서버에 접속합니다.
sudo su
cd 1st-KDT-Linux/edgex
vim docker-compose.yml
WRITABLE_PIPELINE_FUNCTIONS_MQTTSEND_ADDRESSABLE_ADDRESS에 K8s-Master Node ip 입력
WRITABLE_PIPELINE_FUNCTIONS_MQTTSEND_ADDRESSABLE_PORT에 Rabbitmq Pod의 1883포트와 대응되는 포트 입력
docker-compose 재실행
docker-compose down
docker-compose up -d
라즈베리파이에 접속합니다.
python Temp_Hum_Sensor.py
마스터 노드에 접속합니다.
kubectl get all
# Influx DB의 이름 확인
# kubectl exec -it <Influx DB 파드의 이름> bash
kubectl exec -it pod/influxdb-0 bash
## influxdb에 접속합니다.
influx
## database를 조회합니다.
show databases
## mqtt database를 사용합니다.
use mqtt
## measurements를 조회합니다.
show measurements
## mqtt_consumer란 measurement에서 모든 데이터 조회합니다.
select * from mqtt_consumer
influxdb 내의 센서 데이터를 삭제하고 다시 받고 싶을 때,
## influxdb에 접속합니다.
influx
## mqtt database를 사용합니다.
use mqtt
## measurements를 조회합니다.
show measurements
## mqtt_consumer란 measurement에서 모든 데이터 조회합니다.
select * from mqtt_consumer
## mqtt_consumer란 measurement를 삭제합니다.
drop measurement mqtt_consumer
## measurements 조회시 아무것도 조회가 안되야합니다.
show measurements
## 센서 데이터를 재전송된 후 influxdb에 저장되면 measurements 조회시 mqtt_consumer가 조회되어야 합니다.
show measurements
## mqtt_consumer measurement에서 모든 데이터 조회합니다.
select * from mqtt_consumer