k8s 학습 노트 etcd 집단 배치

11690 단어 클라우드 컴퓨팅
1. 먼저 세 개의 가상 머신을 준비합니다: ip: 10.10.102.60 10.10.102.61 10.10.102.62
2. hostname 수정: hostname 영구 수정, hostname 모두 ip로 수정 hostname 내용 편집: #vim/etc/hostname 내용 삭제, ip 리셋 서버로 수정: #reboot hostname 수정 여부 보기: #hostname 3, etcd 집단 설치 etcd: #yum install etcd - y
다음과 같은 경우
여기에서 제공하는 두 가지 해결 방안을 시도할 수 있습니다: a, 먼저 직접 클릭http://mirrors.cug.edu.cn/…..에 대한 링크입니다. 만약에 저희 로컬 네트워크가 접근할 수 있다면 서버의 네트워크 문제임을 증명하고 dns를 수정할 수 있습니다. 방법은 다음과 같습니다.
  • 명령줄에 sudovim/etc/resolv를 입력합니다.conf
  • i를 클릭하여 편집 모드로 들어갑니다
  • 파일 내용 수정:nameserver 202.101.172.46#당신의 주 DNS로 수정, 본인이 항주에 있기 때문에 여기는 항주전신의 dns search localhost#당신의 도메인 이름을 사용합니다
  • esc를 누르면 편집 모드를 종료합니다
  • 입력: wq 후 리턴 키 종료 후 실행:
  • yum makecache

    해결된 후에 etcd를 다시 설치하고 문제가 해결되지 않으면 b 방안을 시도합니다.
    b. 제시된 이상에서 알 수 있듯이 etcd-2.3.7-2를 찾을 수 없습니다.el7.x86_64로 인해 발생한 해결 방안은 다음과 같다. 먼저 인터넷에서 etcd-2.3.7-2를 다운로드한다.el7.x86_64.rpm
  • 사용 명령: scp/home/rice/데스크톱/etcd-2.3.7-2.el7.x86_64.rpm [email protected]:/tmp/etcd-2.3.7-2.el7.x86_64.rpm(etcd-2.3.7-2.el7.x86_64.rpm의 파일 주소는 실제 상황에 따라 수정됨) 파일을 가상 시스템에 원격으로 업로드합니다
  • 채택 명령: rpm-i etcd-2.3.7-2.el7.x86_64.rpm(설치)
  • 설치 후 나타납니다

  • 하지만 괜찮아요. etcd를 다시 설치하면 돼요.
    설치 성공 후 etcd 그룹 설정
    etcd 프로필을 수정합니다. 여기 환경은/etc/etcd/etcd입니다.conf, 실제 상황에 따라 수정하십시오.
    etcd0 구성 예:
    #[member]
    #  
    ETCD_NAME=etcd0
    # #  
    ETCD_DATA_DIR="/var/lib/etcd/etcd0"
    # #   Etcd  
    ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
    # #  
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
    # #   Etcd  
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.60:2380"
    # #  
    ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
    # #  ,new  
    ETCD_INITIAL_CLUSTER_STATE="new"
    # #   token 
    ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
    # #     
    ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.60:2379,http://10.10.102.60:4001"
    

    etcd1 구성 예:
    #[member]
    #  
    ETCD_NAME=etcd1
    # #  
    ETCD_DATA_DIR="/var/lib/etcd/etcd1"
    # #   Etcd  
    ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
    # #  
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
    # #   Etcd  
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.61:2380"
    # #  
    ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
    # #  ,new  
    ETCD_INITIAL_CLUSTER_STATE="new"
    # #   token 
    ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
    # #     
    ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.61:2379,http://10.10.102.61:4001"
    

    etcd2 구성 예:
    #[member]
    #  
    ETCD_NAME=etcd2
    # #  
    ETCD_DATA_DIR="/var/lib/etcd/etcd2"
    # #   Etcd  
    ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
    # #  
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
    # #   Etcd  
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.62:2380"
    # #  
    ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
    # #  ,new  
    ETCD_INITIAL_CLUSTER_STATE="new"
    # #   token 
    ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
    # #     
    ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.62:2379,http://10.10.102.62:4001"

    위의 구성 매개 변수에 대한 설명:
  • ETCD_NAME: ETCD의 노드 이름은 클러스터에서 고유해야 하며 hostname을 사용할 수 있습니다
  • ETCD_DATA_DIR: ETCD의 데이터 저장 디렉터리, 서비스 실행 데이터 저장 경로, 기본값은 ${name}입니다.etcd.
  • ETCD_SNAPSHOT_COUNTER: 몇 번의 트랜잭션 제출이 스냅샷을 촉발하고, 몇 개의 트랜잭션이 제출되었는지 지정할 때, 캡처된 스냅샷을 디스크에 저장합니다..
  • ETCD_HEARTBEAT_INTERVAL: ETCD 노드 사이의 심장 박동 전송 간격, 단위 밀리초, leader는 얼마나 자주 심장 박동을followers로 보냅니다.기본값은 100ms..
  • ETCD_ELECTION_TIMEOUT: 이 노드가 선거에 참여하는 최대 시간 초과 시간, 단위 밀리초, 재투표의 시간 초과 시간, 팔로우가 이 시간 간격에 하트팩을 받지 못하면 재투표를 촉발합니다. 기본값은 1000ms입니다
  • ETCD_LISTEN_PEER_URLS: 이 노드가 다른 노드와 통신할 때 감청되는 주소 목록입니다. 여러 주소는 쉼표로 구분됩니다.scheme://IP:PORT여기 scheme는 http, https일 수 있습니다.동료와 통신하는 주소, 예를 들어http://ip:2380, 둘 이상의 경우 쉼표로 구분합니다.모든 노드에 접근할 수 있어야 하기 때문에localhost를 사용하지 마십시오.
  • ETCD_LISTEN_CLIENT_URLS: 이 노드가 클라이언트와 통신할 때 감청하는 주소 목록, 대외적으로 제공하는 서비스의 주소: 예를 들어http://ip:2379 ,http://127.0.0.1:2379, 클라이언트가 여기에 연결되어 etcd와 상호작용합니다
  • ETCD_INITIAL_ADVERTISE_PEER_URLS: 이 구성원 노드는 전체 집단의 통신 주소 목록에 있습니다. 이 주소는 집단 데이터를 전송하는 데 사용됩니다.따라서 이 주소는 집단의 모든 구성원을 연결할 수 있어야 한다.이 노드 동료가 주소를 감청하면 이 값은 집단의 다른 노드에게 알려줍니다..
  • ETCD_INITIAL_CLUSTER: ETCD_ 형식으로 클러스터 내부의 모든 구성원 주소 구성NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS, 쉼표로 구분된 여러 개의 노드 정보가 있으면 node1=http://ip1:2380 ,node2=http://ip2:2380 ,….주의: 여기의 node1은 노드의 - name가 지정한 이름입니다.뒤에 있는 ip1:2380은 - initial-advertise-peer-urls가 지정한 값입니다
  • ETCD_ADVERTISE_CLIENT_URLS: 클러스터에 있는 다른 구성원의 클라이언트 주소 목록에 브로드캐스트합니다
  • ETCD_INITIAL_CLUSTER_STATE: 새 그룹을 만들 때 이 값은 new입니다.만약 이미 존재하는 집단이라면, 이 값은existing..
  • ETCD_INITIAL_CLUSTER_토큰: 그룹 토큰을 초기화하고 그룹 토큰을 만듭니다. 이 값은 그룹마다 유일합니다.이렇게 하면 그룹을 다시 만들려면 이전과 같이 설정해도 새로운 그룹과 노드 uid를 다시 생성합니다.그렇지 않으면 여러 클러스터 간의 충돌이 발생하여 알 수 없는 오류가 발생할 수 있습니다

  • 참고: 모든 ETCD_MY_FLAG의 구성 매개변수는 명령행 매개변수를 통해서도 설정할 수 있지만 명령행에 지정된 매개변수 우선 순위가 더 높고 환경 변수에 해당하는 값이 있는 경우 무시됩니다.
    테스트 etcd 집단
    위에 따라 각 집단 노드를 설정한 후 각 노드에서 etcd를 시작합니다.
    [root@etcd2 ~]# $ systemctl start etcd

    모든 집단 노드 정보를 보십시오.
    [root@etcd1 ~]# etcdctl member list
    Error:  client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
    ; error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused
    
    error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
    error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused

    위의 오류 정보가 발생하면 이 방법을 통해 해결할 수 있습니다: etcd 프로필의 ETCD_LISTEN_CLIENT_URLS 항목, 가입http://127.0.0.1:2379 ,http://127.0.0.1:4001 .예:
    ETCD_LISTEN_CLIENT_URLS="http://10.10.102.61:2379,http://10.10.102.61:4001,http://127.0.0.1:2379,http://127.0.0.1:4001" 

    다시 검색:
    [root@etcd2 ~]# etcdctl member list
    ce2a822cea30bfca: name=etcd2 peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://10.10.102.61:2379,http://10.10.102.61:4001 isLeader=true

    질의가 나타나는 경우:
    알림에서 알 수 있듯이 그룹 노드의 버전이 너무 낮아서 etcd0에서:
    [root@10 ~]# etcd --version
    etcd Version: 3.1.9
    Git SHA: 0f4a535
    Go Version: go1.7.4
    Go OS/Arch: linux/amd64

    etcd1 및 etcd2:
    [root@10 ~]# etcd --version
    etcd Version: 2.3.7
    Git SHA: fd17c91
    Go Version: go1.6.3
    Go OS/Arch: linux/amd64

    해결 방법은 어떤 집단 노드의 etcd를 제거하고 같은 버전 번호의 etcd를 설치하면 됩니다. 여기서 낮은 버전의 etcd를 제거하고 높은 버전을 다시 설치합니다.
    제거 방법:
    [root@10 ~]# yum remove etcd

    다시 설치한 후에 위와 같이 etcd를 다시 설정합니다.conf, etcd를 시작하여 클러스터 상태를 확인합니다.
    [root@10 tmp]# etcdctl member list
    81816861758ee8a9: name=etcd2 peerURLs=http://10.10.102.62:2380 clientURLs=http://10.10.102.62:2379,http://10.10.102.62:4001 isLeader=false
    9551f10c6eb4d835: name=etcd0 peerURLs=http://10.10.102.60:2380 clientURLs=http://10.10.102.60:2379,http://10.10.102.60:4001 isLeader=false
    e2f8b90ab44a9152: name=etcd1 peerURLs=http://10.10.102.61:2380 clientURLs=http://10.10.102.61:2379,http://10.10.102.61:4001 isLeader=true
    

    집단 배치의 성공을 증명하다.

    좋은 웹페이지 즐겨찾기