calico docker에서의 배치 및 검증
1. 배경
다음 배포는 다섯 개의 서버 환경을 예로 들 수 있습니다.
1: hostname etcdnode1, IP 192.168.56.100
2: hostname etcdnode2, IP 192.168.56.101
3: hostname etcdnode3, IP 192.168.56.102
2: hostname hostnode1, IP 192.168.56.200
3: hostname hostnode2, IP 192.168.56.201
그 중에서 etcdnode1, etcdnode2와 etcdnode3는 etcd를 배치하여calico 네트워크의 백엔드 분포식 저장으로 한다.hostnode1과hostnode2는calico 네트워크를 배치합니다.
소프트웨어 배경:
• Ubuntu 16.04
• etcd - v3.1.10
• Docker
• calicoctl - v1.6.1
• calico/node image - v.2.6.2
• calico, calico-ipam plugins - v1.11.0
2. 배포
2.1. etcd 배포
etcdnode1, etcdnode2와 etcdnode3는 etcd를 배치하여 각각 아래의 명령을 실행합니다.
2.1.1. 설치 etcd
# cd /usr/local
# curl -Lhttps://github.com/coreos/etcd/releases/download/v3.1.10/etcd-v3.1.10-linux-amd64.tar.gz-o etcd-v3.1.10-linux-amd64.tar.gz
# tar -zxf etcd-v3.1.9-linux-amd64.tar.gz
# cd etcd-v3.1.9-linux-amd64
# cp etcd etcdctl /usr/bin
# mkdir -p /var/lib/etcd
# chmod -R a+rw /var/lib/etcd
2.1.2. systemd 서비스 파일 만들기
vi를 사용하여/etc/systemd/system/etcd를 엽니다.서비스 파일.
[Unit]
Description=etcd
Documentation=https://github.com/coreos/etcd
[Service]
Type=notify
Restart=always
RestartSec=5s
LimitNOFILE=40000
TimeoutStartSec=0
ExecStart=/usr/bin/etcd --name ${local_hostname} \
--data-dir /var/lib/etcd \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--advertise-client-urls http://${local_IP}:2379\
--initial-advertise-peer-urls http://${local_IP}:2380 \
--initial-cluster *etcdnode1=http://192.168.56.100:2380,etcdnode2=http://192.168.56.101:2380, etcdnode3=http:// 192.168.56.102:2380 *
--initial-cluster-token my-etcd-token \
--initial-cluster-state new
[Install]
WantedBy=multi-user.target
여기서 주의해야 할 것은local_를hostname、local_IP는 노드 자체의 hostname 및 IP 주소로 대체됩니다.
2.1.3. etcd 서비스 시작
모든 etcd 노드가 위의 절차를 동시에 실행한 후에 아래의 절차를 동시에 실행합니다.
# systemctl daemon-reload
# systemctl enable etcd.service
# systemctl start etcd.service
2.1.4. etcd 상태 확인
# etcdctl cluster-health //
# etcdctl member list //
2.2. docker 배포
hostnode1과hostnode2 노드를 설정해야 합니다.
2.2.1. docker 설치
# apt -y install docker.io
2.2.2. 데몬을 수정합니다.json
Docker 데몬은/etc/docker/daemon이 필요합니다.json 파일에 etcd의 저장과 알림 기능을 설정합니다.vi를 통해/etc/docker/daemon을 열 수 있습니다.json, ${local_IP}를 각 dockerhost의 IP 주소로 바꿉니다.
{
"cluster-store":"**etcd://192.168.56.100:2379, 192.168.56.101:2379,192.168.56.102:2379**",
"cluster-advertise":"${local_IP}:2375",
"hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]
}
2.2.3. docker 서비스 다시 시작
# systemctl restart docker.service
리셋은 일정한 시간이 필요합니다. 완성된 후에docker 설정이 적용되는지 확인하십시오
# docker info
…
Cluster Store: etcd://192.168.56.100:2379,192.168.56.101:2379, 192.168.56.102:2379
Cluster Advertise: 192.168.56.200:2375
Insecure Registries:
127.0.0.0/8
2.3. calico 배포
모든dockerhost는 설정이 필요합니다.
2.3.1. calico 다운로드
PS: 여기서 저희가 다운로드하고 사용한 것은 v1.6.1 버전입니다. 지금까지calico는 v3.1.1 버전이 나왔습니다.
# wget -O /usr/local/bin/calicoctlhttps://github.com/projectcalico/calicoctl/releases/download/v1.6.1/calicoctl
# chmod +x /usr/local/bin/calicoctl
# mkdir /var/lib/calico
# curl -L -o /var/lib/calico/calicohttps://github.com/projectcalico/cni-plugin/releases/download/v1.11.0/calico
# curl -L -o/var/lib/calico/calico-ipamhttps://github.com/projectcalico/cni-plugin/releases/download/v1.11.0/calico-ipam
# chmod +x /var/lib/calico/calico
# chmod +x/var/lib/calico/calico-ipam
2.3.2. calico 설정 추가
# mkdir -p /etc/calico
그리고calico의 설정을 수정합니다./etc/calico/calicoctl.cfg 파일에 다음 내용이 추가됩니다.여기에는 주로 etcd 단말기의 설정을 추가하고 여러 개의 etcd 노드가 있으면 쉼표로 연결할 수 있습니다.
apiVersion: v1
kind: calicoApiConfig
metadata:
spec:
datastoreType: "etcdv2"
etcdEndpoints: "http:// 192.168.56.100:2379,http:// 192.168.56.101:2379,http://192.168.56.102:2379"
2.3.3. 코어 네트워크 매개변수 설정
Calico는 "net.ipv4.conf.all.rp_filter"와 "net.ipv4.ip_forward"등의 매개 변수를 켜야 하지만, 일부 발행판은 기본적으로 이 매개 변수를 켜지 않기 때문에 수동으로 켜야 합니다.
# echo “net.ipv4.conf.all.rp_filter=1”>> /etc/sysctl.conf
# echo “net.ipv4.ip_forward=1” >>/etc/sysctl.conf
# sysctl -p
2.3.4. calico/node 용기 시작
calico/node 용기를 시작하려면 네트워크로 대응하는 거울을 다운로드해야 할 수도 있습니다.또한 ${local_IP}는 각각의 docker host IP 주소로 대체해야 합니다.
다음:
# calicoctl node run--node-image=calico/node:v2.6.2 --ip={local_IP}
접속 상태를 확인합니다.
# calicoctl node status
Calico process is running.
IPv4 BGP status
+----------------+-------------------+-------+------------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+----------------+-------------------+-------+------------+-------------+
| 192.168.56.201 | node-to-node mesh| up | 2017-11-06 | Established |
+----------------+-------------------+-------+------------+-------------+
IPv6 BGP status
No IPv6 peers found.
2.3.5. docker 네트워크 만들기
주의: 이 단계는 임의의dockerhost 노드에서 만들면 됩니다. 다른 노드는 공유calico 네트워크입니다.
# docker network create --driver calico--ipam-driver calico-ipam ${network name}
여기, 우리는'calico-network'라는 calico 네트워크를 만듭니다.
# docker network create --driver calico--ipam-driver calico-ipam "calico-network"
2.3.6. calico 네트워크 검증
hostnode1에서 명령 실행
# docker run --net calico-network--name workload-A -tid busybox
hostnode2에서 명령 실행
# docker run --net calico-network--name workload-B -tid busybox
그리고 용기workload-A에 ping 용기workload-B의 IP 주소를 사용하면 설정이 성공했다는 것을 알 수 있습니다.
우선workload-B의 IP 주소를 가져와hostnode2에서 명령을 실행합니다.
# docker exec workload-B hostname –i
192.168.0.17
그리고 hostnode1에 이 IP 주소를 핑합니다.
# docker exec workload-A ping 192.168.0.17
PING 192.168.0.17 (192.168.0.17) 56(84)bytes of data.
64 bytes from 192.168.0.17: icmp_seq=1ttl=64 time=0.165 ms
…
Ping통은 서로 다른dockerhost에서 같은calico 네트워크를 사용하는 두 용기 네트워크가 서로 통한다는 것을 나타낸다.
2.3.7. ingress 기능 설정
dockerhost가 필요하면 용기 네트워크에 접근할 수 있습니다. 위의 예를 들어hostnode2에서workload-A의 IP 주소에 접근하려면 이calico 네트워크의ingress 특성을 설정해야 합니다.
기존 구성을 먼저 내보냅니다.
# calicoctl get profile "calico-network"-o json > profile.json
profile.json의ingress부분, 여기는 데이터에 들어가는 설정입니다.특히 source->nets 섹션의 구성은 다음과 같습니다.
"ingress": [
{
"action":"allow",
"source": {
"tag":"calico-network"
},
"destination": {}
},
{
"action":"allow",
"source": {
"nets": [
"192.168.56.1/24"
]
},
"destination": {}
}
],
수정된 프로필을 교체합니다.json 파일.
# calicoctl replace -f profile.json
그리고 hostnode2에서 ping으로 워크로드-A의 IP 주소를 시도하면 ping이 연결됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka 환경의 신속한 구축Step 3: Create a topic Let's create a topic named "test"with a single partition and only one replica: Kafka comes with a...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.