kubeadm+contaainerd+cilium으로 k8s를 구축하여 hubble의 동작을 확인하기 전에 시험을 실시하였다

개요
kubernetes를 도입할 때 Calico와 Flanner 등 CNI를 사용하는 경우가 많다고 생각했는데 그중에서도 Cilium(엄숙하게 읽을 수 있다)에 신경을 많이 써서 여러 가지 방법을 시도해 보고 싶었어요.
CKA의 공부도 병행했기 때문에 하려면 쿠베르테스 구축부터 해야 한다.
앞으로 생산라인 시간인 dockershim도 삭제되고,contained도 함께 가져왔습니다.
기사가 길어지기 때문에 이번에는 도입과 동작 확인만 진행한다.
Cilium이란
아래 참조공식.
Clilium은 네트워크, 안전성과 가관성을 제공하고 클라우드 로컬 환경, 예를 들어 Kubernetes 집단과 다른 컨테이너 프레젠테이션 플랫폼을 대상으로 하는 오픈 소스 프로젝트이다.
eBPF라고 불리는 새로운 Linux 커널 기술은 강력한 보안, 가시성 및 네트워크 제어 논리를 Linux 커널에 동적으로 삽입할 수 있는 Cilium에 기반을 두고 있다.eBPF는 고성능 네트워크 작업, 멀티클러스터 및 구름 많은 기능, 고부하 분산, 투명 암호화, 광범위한 네트워크 보안 기능, 투과성 관측 등을 제공하는 데 사용된다.
eBPF를 충분히 사용하여 Kubbernetes 네트워크와 관련된 안전성과 시각화를 실현하였다.
또한 Clilium에는 Hubble의 Clium 통신을 시각화할 수 있는 도구가 하나 더 있습니다.
이해하기 쉬운 해설 페이지가 있으니 자세한 내용은 아래의 내용을 참조하십시오.
https://blog.framinal.life/entry/2021/02/20/222728
https://thinkit.co.jp/article/18836
그럼 환경을 구축하고 싶어요.
컨디션
aws + kubeadm + containerd + cilium
kubeadm+contaained를 가져옵니다.
※ 자세한 설정 없이 쉽게 가져올 수 있습니다.
환경 준비
aws 환경에서 Ubuntu20입니다.04 2대를 가동하다.
이번, 실례 사이즈:t3.medium으로
  • 제어 평면 (cp) 측면의 호스트 이름을 수정하여 이해하기 쉽도록 합니다.sudo hostnamectl set-hostname k8scp
  • 작업 노드 측면의 호스트 이름을 변경합니다.sudo hostnamectl set-hostname k8swork
  • cp측,worker측의 어느 쪽이든 다음과 같은 절차를 실시한다
  • k8s 공식kubeadm 설치의 프로그램'설치 운행 시간'에 앞서 진행한다.

  • 실시containerd의 절차를 다시 "kubeadm 설치"의 절차로 되돌려줍니다.
  • "kubeadm,kubelet,kubectl의 설치"절차를 실시한다.
  • kubelet에서 사용하는cloup 드라이버를 설정합니다.
  • /etc/default/kubelet의 파일에 기입KUBELET_EXTRA_ARGS=--cgroup-driver=systemd.
  • kubelet을 다시 시작합니다. systemctl status kubelet에서 시작합니다.
  • 설치가 완료되지 않아 실패할 수 있습니다.
  • 이 경우 여기설치 중kubeadm 제어 평면 정지 계속 대기 참조
  • 평면 (cp) 측면을 제어하는 작업
    실행kubeadm init.
    만약 init가 여기에 실패한다면 issue,contained의 설정 파일을 삭제하는 것이 좋습니다.
    rm /etc/containerd/config.toml
    systemctl restart containerd
    kubeadm init
    
    kubeadm init 성공 시 정보
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    , kubectl 명령을 실행할 수 있습니다.
    그리고 kubeadm join의 정보를 잊지 말고 미리 적어두세요.
    kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
    작업 노드 측면의 작업
    cp측에 기록된 명령을 실행하면workernode로 참가할 수 있습니다.
    kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
    성공 소식을 받으면 반드시cp측에서 kubectl get node확인 동작을 실행하십시오.
    ubuntu@k8scp:~$ kubectl get node
    NAME      STATUS   ROLES                  AGE   VERSION
    k8scp     Ready    control-plane,master   21h   v1.21.1
    k8swork   Ready    <none>                 21h   v1.21.1
    
    cilium 가져오기
    미리 helm 설치 하세요.
    공식 절차에 따라 진행한다cilium 만들기.cilium status 명령으로 결과가 나오면 가져오기가 완료됩니다.
    이렇게 시각화 도구 허블을 가져오세요.
    공식 절차hubble 설치에 따라 진행하다.
    여기에 가져올 수 있다면 cilium status에 있는 hubble의 상태도 OK를 표시합니다.

    cilium용 연결 테스트pod를 디버깅하고 hubble로 확인합니다.
    공식 절차에 따라 진행한다프로그램 설계.
    cp 쪽에서 허블을 시작합니다.
    # 接続用のIPアドレスを確認
    curl ifconfig.io
    # 外部公開する
    kubectl port-forward -n kube-system svc/hubble-ui --address 0.0.0.0 --address :: 12000:80
    
    브라우저를 통해 에 연결IPアドレス:12000합니다.
    다음 화면이 나오면 완성됩니다.
    첫화면

    cilium-test를 선택할 때의 화면

    총결산
    이번에 cilium에서 hubble로 가져오는 시동이 걸렸습니다.
    cilium 기능이 아직 완전히 사용되지 않았기 때문에 앞으로 다양한 기능을 시도해 보고 싶다.
    여기까지 봐주셔서 감사합니다.
    기타
    cilium에 대한 간단한 학습 방법은 아래 URL을 참조하십시오.
    (나는'Cilium getting started'를 만들어 보았는데 매우 이해하기 쉽다.)
    https://play.instruqt.com/isovalent

    좋은 웹페이지 즐겨찾기