Kubernetesネットワーク構築-flannel

2924 ワード

一、環境準備
まずkubernetesクラスタがあり、クラスタネットワークは未配置状態であり、クラスタ情報は以下の通りである.
IPアドレス
ノード
192.168.1.101
master
192.168.1.102
Node,etcd(単点)
192.168.1.103
node
二、やる
2.1.kubernetesクラスタの作成
詳細はここでは説明しませんが、このブログの他の記事を参照してください.唯一注意しなければならないのは、クラスタ(init)を作成するときに--pod-network-cidr 10.244.0.0/16パラメータを追加することです.セグメントは必要に応じて自分で指定し、--pod-network-cidrパラメータを使用しない場合、flannel podが起動するとfailed to register network: failed to acquire lease: node "xxxxxx" pod cidr not assignedエラーが発生します.以下は一部のサンプルコマンドです.
#    rpm
tee /etc/yum.repos.d/mritd.repo << EOF
[mritdrepo]
name=Mritd Repository
baseurl=https://rpm.mritd.me/centos/7/x86_64
enabled=1
gpgcheck=1
gpgkey=https://cdn.oss.link/keys/rpm.public.key
EOF
yum install -y kubelet kubectl kubernetes-cni kubeadm

#    hostname
echo "192-168-1-101.master" > /etc/hostname
echo "127.0.0.1   192-168-1-101.master" >> /etc/hosts
sysctl kernel.hostname="192-168-1-101.master"

# load   
images=(kube-proxy-amd64:v1.4.6 kube-discovery-amd64:1.0 kubedns-amd64:1.7 kube-scheduler-amd64:v1.4.6 kube-controller-manager-amd64:v1.4.6 kube-apiserver-amd64:v1.4.6 etcd-amd64:2.2.5 kube-dnsmasq-amd64:1.3 exechealthz-amd64:1.1 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.4.1)
for imageName in ${images[@]} ; do
  docker pull mritd/$imageName
  docker tag mritd/$imageName gcr.io/google_containers/$imageName
  docker rmi mritd/$imageName
done

#       dns、etcd         
kubeadm init --api-advertise-addresses 192.168.1.101 --external-etcd-endpoints http://192.168.1.102:2379 --use-kubernetes-version v1.4.6 --pod-network-cidr 10.244.0.0/16

2.2.flannelネットワークの作成
前にネットワークを作成するように設定すれば簡単ですweaveと同じです
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

興味のある人はymlを見てもいいです.彼のミラーはquay.ioに管理されているので、壁の問題はなく、事前にloadを入れることもできます.ymlの上のConfigMapのipセグメントは--pod-network-cidrと一致したほうがいい(一致しないでテストしていないので、自分でやってみたい)、それから少し待ってネットワークが作成されて成功し、スクリーンショットは以下の通りです.
2.3、ネットワークテスト
環境が限られているため、しばらくはネットワークの相互接続に問題があるかどうかをテストするだけで、性能については本人もネットワーク部分に対してずっと短い板なので、大神たちが自分で来る必要があります.
rcは以下の通り
apiVersion: v1
kind: ReplicationController
metadata:
  name: alpine
  labels:
    name: alpine
spec:
  replicas: 2
  selector:
    name: alpine
  template:
    metadata:
      labels:
        name: alpine
    spec:
      containers:
        - image: mritd/alpine:3.4
          imagePullPolicy: Always
          name: alpine
          command: 
            - "bash" 
            - "-c"
            - "while true;do echo test;done"
          ports:
            - containerPort: 8080
              name: alpine

2つのホストに行ってそれぞれコンテナに入り、その後、互いにpingクラスタIPをpingすることができる.図2 pingは間違っていて、再び図を切り取らないで、理解します