Kubernetes에 etcd 서버 배포 시도
4698 단어 kubernetesetcd
개요
다음 문장에서 각 Pod의 처리 내용과 진전 상황을 관리하기 위해 모든 노드에 etcd 서버를 설정했습니다.
Kubernetes의 모든 노드에서 etcd 서버를 이동하는 예입니다.
Kubernetes의 Daemon set을 사용하여 각 노드에서 1 상자를 이동합니다.
또 쿠베르네테스의 구축여기요이 완료됐다는 전제가 있다.
데몬 세트 정보
Kubernetes의 모든 노드에서 동일한 Pod을 이동할 수 있습니다.
따라서 노드를 연결하는 포트 이동 서비스나 hostPath를 불러오는 것도 쉽다.
모든 노드에서 감시 도구를 실행하거나 로그 수집 도구를 실행하는 것은 공식적인 예이다.
작업 환경
Kubernetes 구축 완성된 상태는 거의 같다.
또 이번에는 여러 노드에서 이동하기 위해 두 노드를 이동한다.
주 서버
노드 서버 1
노드 서버 2
호스트 이름
master
node1
node2
IP 주소
192.168.137.20
192.168.137.21
192.168.137.22
실행 서비스
etcdkube-apiserverkube-controller-managerkube-scheduler
kubeletkube-proxy
kubeletkube-proxy
프로비저닝
이번에는 마스터 서버에서 실행되는 etcd를 발견용 etcd로 사용했습니다.
Deamonset을 사용하여 각 노드에서 상승하는 etcd 패키지를 사용하면 발견자가 사용하는 etcd를 먼저 물어보고 그룹을 구축합니다.
모든 Pod는 etcd 데이터를 저장하기 위해 노드의/데이터/etcd 폴더를 불러옵니다.
또한 각 노드의 2379/2380번 포트를Pod의 2379/2380번 포트에 연결합니다.
각 노드의 2379/2380번 포트에 접근하여 etcd 서버에 연결할 수 있습니다.
검색 서버 준비
마스터 서버의 etcd가 http://192.168.137.20:2379에서 실행된다고 가정하고 발견자를 위해/discovery/test 이하를 사용합니다.
우선, 등록 집단의 크기.
지정한 수량의 etcd를 연결하지 않으면 시작하지 않기 때문에 노드 수량과 같은 값으로 설정합니다.(적당한 가격으로 설정하여 행동할 수 없는 문제가 발생했다.)
클러스터 크기가 검색자의 경로/_config/size를 등록합니다.etcdctl --endpoints http://192.168.137.20:2379 set /discovery/test/_config/size 2
예제 코드
Dockerfile 및 시작 스크립트는 Githubhttps://github.com/mmitti/kube-etcd에 있습니다.
pod의 IP 주소를 찾기 위해python 스크립트를 통해 etcd를 이동합니다.
다음 두 Deamonset 환경 변수를 지정하십시오.
DISCOVERY: etcd 검색 주소 예제http://192.168.137.20:2379/v2/keys/discovery/test
DATADIR:etcd 데이터의 저장 경로는 hostPath를 마운트하는 경로와 같아야 합니다.
etcd.yaml apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
labels:
name: etcd
name: etcd
spec:
template:
metadata:
labels:
app: etcd
spec:
containers:
- name: etcd
image: mmitti/etcd
imagePullPolicy: Always
ports:
- containerPort: 2379
hostPort: 2379
name: p1
- containerPort: 2380
hostPort: 2380
name: p2
env:
- name: DISCOVERY
value: http://192.168.137.20:2379/v2/keys/discovery/test
- name: DATADIR
value: /data
volumeMounts:
- name: etcd-data
mountPath: /data
volumes:
- name: etcd-data
hostPath:
path: /data/etcd
---
apiVersion: v1
kind: Service
metadata:
name: etcd
labels:
app: etcd
spec:
ports:
- port: 2379
name: p1
- port: 2380
name: p2
clusterIP: None
selector:
app: etcd
Kubernetes에 yaml을 등록합니다.$ kubectl create -f etcd.yaml
동작 확인
Pod이 시작되었는지 확인합니다.$ kubectl get po -l app=etcd
NAME READY STATUS RESTARTS AGE
etcd-9w1sw 1/1 Running 1 21h
etcd-zrn62 1/1 Running 1 21h
또한 각 Pod이 이동하는 노드를 확인합니다.$ kubectl describe po -l app=etcd
Name: etcd-9w1sw
Namespace: default
Node: node1/192.168.137.21
--省略--
Name: etcd-zrn62
Namespace: default
Node: node2/192.168.137.22
--省略--
마지막으로 etcd 서버에 값을 쓰고 읽으려고 합니다.$ etcdctl --endpoints http://192.168.137.21:2379 set /hoge testtest
testtest
$ etcdctl --endpoints http://192.168.137.21:2379 get /hoge
testtest
$ etcdctl --endpoints http://192.168.137.22:2379 get /hoge
testtest
쓴 값만 읽으면 성공합니다.
보충하여 기록하다
노드가 재부팅되면 Pod의 IP 주소가 변경되어 통신이 불가능할 수 있습니다.
발견자에 등록된 IP 주소는 포드가 아니라 노드가 좋습니다.
Reference
이 문제에 관하여(Kubernetes에 etcd 서버 배포 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mmitti/items/406e17861df61f5224be
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Kubernetes 구축 완성된 상태는 거의 같다.
또 이번에는 여러 노드에서 이동하기 위해 두 노드를 이동한다.
주 서버
노드 서버 1
노드 서버 2
호스트 이름
master
node1
node2
IP 주소
192.168.137.20
192.168.137.21
192.168.137.22
실행 서비스
etcdkube-apiserverkube-controller-managerkube-scheduler
kubeletkube-proxy
kubeletkube-proxy
프로비저닝
이번에는 마스터 서버에서 실행되는 etcd를 발견용 etcd로 사용했습니다.
Deamonset을 사용하여 각 노드에서 상승하는 etcd 패키지를 사용하면 발견자가 사용하는 etcd를 먼저 물어보고 그룹을 구축합니다.
모든 Pod는 etcd 데이터를 저장하기 위해 노드의/데이터/etcd 폴더를 불러옵니다.
또한 각 노드의 2379/2380번 포트를Pod의 2379/2380번 포트에 연결합니다.
각 노드의 2379/2380번 포트에 접근하여 etcd 서버에 연결할 수 있습니다.
검색 서버 준비
마스터 서버의 etcd가 http://192.168.137.20:2379에서 실행된다고 가정하고 발견자를 위해/discovery/test 이하를 사용합니다.
우선, 등록 집단의 크기.
지정한 수량의 etcd를 연결하지 않으면 시작하지 않기 때문에 노드 수량과 같은 값으로 설정합니다.(적당한 가격으로 설정하여 행동할 수 없는 문제가 발생했다.)
클러스터 크기가 검색자의 경로/_config/size를 등록합니다.etcdctl --endpoints http://192.168.137.20:2379 set /discovery/test/_config/size 2
예제 코드
Dockerfile 및 시작 스크립트는 Githubhttps://github.com/mmitti/kube-etcd에 있습니다.
pod의 IP 주소를 찾기 위해python 스크립트를 통해 etcd를 이동합니다.
다음 두 Deamonset 환경 변수를 지정하십시오.
DISCOVERY: etcd 검색 주소 예제http://192.168.137.20:2379/v2/keys/discovery/test
DATADIR:etcd 데이터의 저장 경로는 hostPath를 마운트하는 경로와 같아야 합니다.
etcd.yaml apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
labels:
name: etcd
name: etcd
spec:
template:
metadata:
labels:
app: etcd
spec:
containers:
- name: etcd
image: mmitti/etcd
imagePullPolicy: Always
ports:
- containerPort: 2379
hostPort: 2379
name: p1
- containerPort: 2380
hostPort: 2380
name: p2
env:
- name: DISCOVERY
value: http://192.168.137.20:2379/v2/keys/discovery/test
- name: DATADIR
value: /data
volumeMounts:
- name: etcd-data
mountPath: /data
volumes:
- name: etcd-data
hostPath:
path: /data/etcd
---
apiVersion: v1
kind: Service
metadata:
name: etcd
labels:
app: etcd
spec:
ports:
- port: 2379
name: p1
- port: 2380
name: p2
clusterIP: None
selector:
app: etcd
Kubernetes에 yaml을 등록합니다.$ kubectl create -f etcd.yaml
동작 확인
Pod이 시작되었는지 확인합니다.$ kubectl get po -l app=etcd
NAME READY STATUS RESTARTS AGE
etcd-9w1sw 1/1 Running 1 21h
etcd-zrn62 1/1 Running 1 21h
또한 각 Pod이 이동하는 노드를 확인합니다.$ kubectl describe po -l app=etcd
Name: etcd-9w1sw
Namespace: default
Node: node1/192.168.137.21
--省略--
Name: etcd-zrn62
Namespace: default
Node: node2/192.168.137.22
--省略--
마지막으로 etcd 서버에 값을 쓰고 읽으려고 합니다.$ etcdctl --endpoints http://192.168.137.21:2379 set /hoge testtest
testtest
$ etcdctl --endpoints http://192.168.137.21:2379 get /hoge
testtest
$ etcdctl --endpoints http://192.168.137.22:2379 get /hoge
testtest
쓴 값만 읽으면 성공합니다.
보충하여 기록하다
노드가 재부팅되면 Pod의 IP 주소가 변경되어 통신이 불가능할 수 있습니다.
발견자에 등록된 IP 주소는 포드가 아니라 노드가 좋습니다.
Reference
이 문제에 관하여(Kubernetes에 etcd 서버 배포 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mmitti/items/406e17861df61f5224be
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
마스터 서버의 etcd가 http://192.168.137.20:2379에서 실행된다고 가정하고 발견자를 위해/discovery/test 이하를 사용합니다.
우선, 등록 집단의 크기.
지정한 수량의 etcd를 연결하지 않으면 시작하지 않기 때문에 노드 수량과 같은 값으로 설정합니다.(적당한 가격으로 설정하여 행동할 수 없는 문제가 발생했다.)
클러스터 크기가 검색자의 경로/_config/size를 등록합니다.
etcdctl --endpoints http://192.168.137.20:2379 set /discovery/test/_config/size 2
예제 코드
Dockerfile 및 시작 스크립트는 Githubhttps://github.com/mmitti/kube-etcd에 있습니다.
pod의 IP 주소를 찾기 위해python 스크립트를 통해 etcd를 이동합니다.
다음 두 Deamonset 환경 변수를 지정하십시오.
DISCOVERY: etcd 검색 주소 예제http://192.168.137.20:2379/v2/keys/discovery/test
DATADIR:etcd 데이터의 저장 경로는 hostPath를 마운트하는 경로와 같아야 합니다.
etcd.yaml apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
labels:
name: etcd
name: etcd
spec:
template:
metadata:
labels:
app: etcd
spec:
containers:
- name: etcd
image: mmitti/etcd
imagePullPolicy: Always
ports:
- containerPort: 2379
hostPort: 2379
name: p1
- containerPort: 2380
hostPort: 2380
name: p2
env:
- name: DISCOVERY
value: http://192.168.137.20:2379/v2/keys/discovery/test
- name: DATADIR
value: /data
volumeMounts:
- name: etcd-data
mountPath: /data
volumes:
- name: etcd-data
hostPath:
path: /data/etcd
---
apiVersion: v1
kind: Service
metadata:
name: etcd
labels:
app: etcd
spec:
ports:
- port: 2379
name: p1
- port: 2380
name: p2
clusterIP: None
selector:
app: etcd
Kubernetes에 yaml을 등록합니다.$ kubectl create -f etcd.yaml
동작 확인
Pod이 시작되었는지 확인합니다.$ kubectl get po -l app=etcd
NAME READY STATUS RESTARTS AGE
etcd-9w1sw 1/1 Running 1 21h
etcd-zrn62 1/1 Running 1 21h
또한 각 Pod이 이동하는 노드를 확인합니다.$ kubectl describe po -l app=etcd
Name: etcd-9w1sw
Namespace: default
Node: node1/192.168.137.21
--省略--
Name: etcd-zrn62
Namespace: default
Node: node2/192.168.137.22
--省略--
마지막으로 etcd 서버에 값을 쓰고 읽으려고 합니다.$ etcdctl --endpoints http://192.168.137.21:2379 set /hoge testtest
testtest
$ etcdctl --endpoints http://192.168.137.21:2379 get /hoge
testtest
$ etcdctl --endpoints http://192.168.137.22:2379 get /hoge
testtest
쓴 값만 읽으면 성공합니다.
보충하여 기록하다
노드가 재부팅되면 Pod의 IP 주소가 변경되어 통신이 불가능할 수 있습니다.
발견자에 등록된 IP 주소는 포드가 아니라 노드가 좋습니다.
Reference
이 문제에 관하여(Kubernetes에 etcd 서버 배포 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mmitti/items/406e17861df61f5224be
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
labels:
name: etcd
name: etcd
spec:
template:
metadata:
labels:
app: etcd
spec:
containers:
- name: etcd
image: mmitti/etcd
imagePullPolicy: Always
ports:
- containerPort: 2379
hostPort: 2379
name: p1
- containerPort: 2380
hostPort: 2380
name: p2
env:
- name: DISCOVERY
value: http://192.168.137.20:2379/v2/keys/discovery/test
- name: DATADIR
value: /data
volumeMounts:
- name: etcd-data
mountPath: /data
volumes:
- name: etcd-data
hostPath:
path: /data/etcd
---
apiVersion: v1
kind: Service
metadata:
name: etcd
labels:
app: etcd
spec:
ports:
- port: 2379
name: p1
- port: 2380
name: p2
clusterIP: None
selector:
app: etcd
$ kubectl create -f etcd.yaml
Pod이 시작되었는지 확인합니다.
$ kubectl get po -l app=etcd
NAME READY STATUS RESTARTS AGE
etcd-9w1sw 1/1 Running 1 21h
etcd-zrn62 1/1 Running 1 21h
또한 각 Pod이 이동하는 노드를 확인합니다.$ kubectl describe po -l app=etcd
Name: etcd-9w1sw
Namespace: default
Node: node1/192.168.137.21
--省略--
Name: etcd-zrn62
Namespace: default
Node: node2/192.168.137.22
--省略--
마지막으로 etcd 서버에 값을 쓰고 읽으려고 합니다.$ etcdctl --endpoints http://192.168.137.21:2379 set /hoge testtest
testtest
$ etcdctl --endpoints http://192.168.137.21:2379 get /hoge
testtest
$ etcdctl --endpoints http://192.168.137.22:2379 get /hoge
testtest
쓴 값만 읽으면 성공합니다.보충하여 기록하다
노드가 재부팅되면 Pod의 IP 주소가 변경되어 통신이 불가능할 수 있습니다.
발견자에 등록된 IP 주소는 포드가 아니라 노드가 좋습니다.
Reference
이 문제에 관하여(Kubernetes에 etcd 서버 배포 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mmitti/items/406e17861df61f5224be
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Kubernetes에 etcd 서버 배포 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mmitti/items/406e17861df61f5224be텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)