
[Edge-Computing] KubeEdge - 온도 데이터 수집 및 전송
엑세스랩 / CCCR_Lecture / #3 [ Author: 황원재 ]
|
#3 [Edge-Computing] KubeEdge - 온도 데이터 수집 및 전송
Table of Contents
Table of Contents
- KubeEdge - 온도 데이터 수집 및 전송
- 1. Docker 설치 - PEC, Raspberry Pi에서 진행
- 2. K8s 설치 - PEC
- 3. KubeEdge : Cloudside 설치 - PEC에서 진행
- 4. KubeEdge : Edgeside 설치 - 라즈베리파이 에서 진행
- 5. KubeEdge 설치 확인 - PEC에서 진행합니다.
- 6. Stream 설정
- 6.1 Cloud-Side - PEC에서 진행합니다.
- 6.2 Edge-Side - 라즈베리파이에서 진행합니다.
- 7. 온도 데이터 수집 및 전송 - 준비
- 7.1 온도 데이터 수집 및 전송 실행 - PEC에서 진행합니다.
- 8. 온도 데이터 수집 및 전송 실행 - 동작 확인
Tasks(0/0)
KubeEdge - 온도 데이터 수집 및 전송#
1. Docker 설치 - PEC, Raspberry Pi에서 진행#
- cccr 교육자로 git을 다운받으신 후 docker-install.sh 파일을 실행합니다.
$ git clone -b 221021 http://112.217.198.156:9000/%EC%97%91%EC%84%B8%EC%8A%A4%EB%9E%A9/CCCR_Lecture $ cd ~/CCCR_Lecture/221020 $ chmod +x docker-install.sh $ sudo ./docker-install.sh
2. K8s 설치 - PEC#
- PEC에서 K8s를 설치합니다.
$ cd ~/CCCR_Lecture/221020 $ chmod +x k8s-install-setup.sh [] 쿠버네티스 설치를 위해 swap을 off합니다. $ sudo swapoff -a $ sudo ./k8s-install-setup.sh
3. KubeEdge : Cloudside 설치 - PEC에서 진행#
- KubeEdge : Cloudside를 PEC에 설치합니다.
$ sudo su # kubectl -n kube-system edit daemonsets.apps kube-proxy [] DaemonSet의 spec.template.spec에 node affinty 추가합니다. affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/edge operator: DoesNotExist
# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # vim kube-flannel.yml [] flannel의 DaemonSet과 Deployment의 spec.template.spec에 node affinty 추가합니다. affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/edge operator: DoesNotExist - key: kubernetes.io/os operator: In values: - linux
# kubectl apply -f kube-flannel.yml > 만약 정상적으로 생성이 되지 않는다면 버전을 v0.20.1로 변경합니다. [] 모든 파드가 활성화 될때까지 기다립니다. # watch kubectl get all -n kube-system
[] KubeEdge를 다운로드 합니다. # wget https://github.com/kubeedge/kubeedge/releases/download/v1.9.4/keadm-v1.9.4-linux-arm64.tar.gz -O - | tar xz && mv keadm-v1.9.4-linux-arm64/keadm/keadm /usr/local/bin && rm -rf keadm-v1.9.4-linux-arm64 [] KubeEdge - Cloud-Side 설치합니다. # export CLOUDCOREIPS=`hostname -I | awk '{print $1}'` # keadm init --advertise-address=${CLOUDCOREIPS} --kubeedge-version 1.9.4 ex) keadm init --advertise-address=192.168.0.235 --kubeedge-version 1.9.4 [] Cloudcore를 서비스 등록니다. # pkill cloudcore # mv /etc/kubeedge/cloudcore.service /etc/systemd/system/ # systemctl enable --now cloudcore # systemctl status cloudcore [] Edge-Side 등록을 위한 토큰을 확인합니다. # keadm gettoken
4. KubeEdge : Edgeside 설치 - 라즈베리파이 에서 진행#
- 다음을 진행하여 라즈베리파이에 KubeEdge : Edgeside를 설치합나디.
[] 라즈베리파이에서 Docker가 정상적으로 실행될 수 있도록 메모리 세팅을 변경한 후 재부팅을 합니다. $ sudo sed -i '$ s/$/ cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1/' /boot/cmdline.txt $ sudo reboot [] 재접속 하여 KubeEdge를 다운로드 합니다. $ sudo su # wget https://github.com/kubeedge/kubeedge/releases/download/v1.9.4/keadm-v1.9.4-linux-arm64.tar.gz -O - | tar xz && sudo mv keadm-v1.9.4-linux-arm64/keadm/keadm /usr/local/bin && rm -rf keadm-v1.9.4-linux-arm64 [] KubeEdge - Edge-Side 설치합니다. # export EDGECOREIPS=`hostname -I | awk '{print $1}'` # keadm join --cloudcore-ipport=${CLOUDCOREIPS} --kubeedge-version <kubeedge version> --token=<token> ex) # keadm join --cloudcore-ipport=192.168.0.235:10000 --kubeedge-version 1.9.4 --token=2b922~~~~-ujnL7txotcn_KnY [] Docker의 cgroup와 Edgecore의 cgroup이 일치시킵니다. # sed -i 's/cgroupfs/systemd/g' /etc/kubeedge/config/edgecore.yaml # systemctl restart edgecore
5. KubeEdge 설치 확인 - PEC에서 진행합니다.#
- 명령어를 실행시켰을 시 다음과 같은 화면이 나와야 합니다.
$ kubectl get nodes
6. Stream 설정#
6.1 Cloud-Side - PEC에서 진행합니다.#
[] Kubernetes 인증서를 확인합니다. # ls /etc/kubernetes/pki/ [] CloudCoreIP 환경변수를 설정합니다. # export CLOUDCOREIPS=`hostname -I | awk '{print $1}'` # echo $CLOUDCOREIPS [] cloudStream의 인증서 생성를 생성합니다. # cd /etc/kubeedge # wget https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/tools/certgen.sh # bash certgen.sh stream [] Cloud-Side에서 cloudStream를 활성화합니다. # vim /etc/kubeedge/config/cloudcore.yaml (cloudStream.enable : false > true) ... cloudStream: enable: true (false에서 true로 변경) streamPort: 10003 tlsStreamCAFile: /etc/kubeedge/ca/streamCA.crt tlsStreamCertFile: /etc/kubeedge/certs/stream.crt tlsStreamPrivateKeyFile: /etc/kubeedge/certs/stream.keyb tlsTunnelCAFile: /etc/kubeedge/ca/rootCA.crt tlsTunnelCertFile: /etc/kubeedge/certs/server.crt tlsTunnelPrivateKeyFile: /etc/kubeedge/certs/server.key tunnelPort: 10004 --- # systemctl restart cloudcore.service [] DNAT를 설정합니다. # iptables -t nat -A OUTPUT -p tcp --dport 10350 -j DNAT --to ${CLOUDCOREIPS}:10003
6.2 Edge-Side - 라즈베리파이에서 진행합니다.#
[] Edge-Side에서 edgeStream를 활성화합니다. # vim /etc/kubeedge/config/edgecore.yaml (edgeStream.enable : false > true) ... edgeStream: enable: true (false에서 true로 변경) handshakeTimeout: 30 readDeadline: 15 server: {CLOUD_SIDE_IP}:10004 tlsTunnelCAFile: /etc/kubeedge/ca/rootCA.crt tlsTunnelCertFile: /etc/kubeedge/certs/server.crtkubectl get nodes tlsTunnelPrivateKeyFile: /etc/kubeedge/certs/server.key writeDeadline: 15 --- # systemctl restart edgecore.service
7. 온도 데이터 수집 및 전송 - 준비#
7.1 온도 데이터 수집 및 전송 실행 - PEC에서 진행합니다.#
[] example 저장소를 다운로드 합니다. $ git clone https://github.com/kubeedge/examples.git [] Edge node의 이름을 instance.yaml에 설정합니다. $ cd ~/examples/temperature-demo/crds $ sed -i "s/edge-node/<your edge node name>/g" instance.yaml [] model & instance 생성 합니다. - model 먼저 생성 후 instance 생성, 삭제할때는 instance 삭제 후 model 삭제 $ kubectl apply -f model.yaml $ kubectl apply -f instance.yaml [] Deployment 수정 & 실행 합니다. $ sed -i "/nodeSelector/d" deployment.yaml $ sed -i "/edge-node/d" deployment.yaml $ kubectl apply -f ~/examples/temperature-demo/deployment.yaml
8. 온도 데이터 수집 및 전송 실행 - 동작 확인#
- 다음을 실행햐여 온도 데이터를 정상적으로 받아오는지 확인합니다.
kubectl get device temperature -oyaml -w
Comment 0
Add a comment
Table of Contents
- KubeEdge - 온도 데이터 수집 및 전송
- 1. Docker 설치 - PEC, Raspberry Pi에서 진행
- 2. K8s 설치 - PEC
- 3. KubeEdge : Cloudside 설치 - PEC에서 진행
- 4. KubeEdge : Edgeside 설치 - 라즈베리파이 에서 진행
- 5. KubeEdge 설치 확인 - PEC에서 진행합니다.
- 6. Stream 설정
- 6.1 Cloud-Side - PEC에서 진행합니다.
- 6.2 Edge-Side - 라즈베리파이에서 진행합니다.
- 7. 온도 데이터 수집 및 전송 - 준비
- 7.1 온도 데이터 수집 및 전송 실행 - PEC에서 진행합니다.
- 8. 온도 데이터 수집 및 전송 실행 - 동작 확인