Kubernetesの新しいバージョンがリリースされたので、ここに別のKubernetesの記事があります。 Kubernetes 1.5では、kubeadmはまだアルファ版であり、ロードバランサーをサポートしていないため、本番環境での使用はお勧めしません。有名なオンラインソックスショップをデモとしてインストールし、nodeportを使用してサービスを公開します。
すべてのノードにKubernetes1.5をインストールする
CentOSのkubernetesリポジトリを追加しましょう:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name =Kubernetesbaseurl =http://yum.kubernetes.io/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0EOF
リポジトリを追加した後、KUbernetesでうまく機能しないため、SElinuxをオフにする必要があります。一時的にオフにするには、次のように入力します
setenforce 0
再起動後も存続させるには、nanoを使用してSElinux構成ファイルを次のように編集します。
nano /etc/selinux/config
SELINUX回線がpermissiveまたはdisabledに設定されていることを確認してください:
SELINUX=disabled
ファイルを保存すると、必要なパッケージのインストールを続行できます。
yum install docker kubelet kubeadm kubectl kubernetes-cni
起動時にDockerの自動起動を有効にするには、次のコマンドを実行します。
systemctl enable docker
そして今すぐ開始するには、次を実行します。
systemctl start docker
次に、kubeletについても同じことをしましょう
systemctl enable kubelet
systemctl start kubelet
クラスターのセットアップ
最初に行う必要があるのは、新しいクラスターのマスターを決定することです。上記のようにすべてのノードが設定されている場合は、次に、指定されたマスターノードを次のコマンドで実行します。
kubeadm init
このコマンドを2回実行することはできないことに注意してください。2回目に実行する前に、クラスターを破棄する必要があります。出力は次のようになります:
[root@centos-01 kubernetes]# kubeadm init
[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: firewalld is active, please ensure ports [6443 9898 10250] are open or your cluster may not function correctly
[init] Using Kubernetes version: v1.5.1
[tokens] Generated token: "9a6b48.b4011ffeeb237381"
[certificates] Generated Certificate Authority key and certificate.
[certificates] Generated API Server key and certificate
[certificates] Generated Service Account signing keys
[certificates] Created keys and certificates in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 105.821991 seconds
[apiclient] Waiting for at least one node to register and become ready
[apiclient] First node is ready after 4.505809 seconds
[apiclient] Creating a test deployment
[apiclient] Test deployment succeeded
[token-discovery] Created the kube-discovery deployment, waiting for it to become ready
[token-discovery] kube-discovery is ready after 68.003359 seconds
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns
Your Kubernetes master has initialized successfully!
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node:
kubeadm join --token=9a6b48.b4011ffeeb237381 45.55.128.42
ポッドネットワークのインストールとクラスターへのノードの追加
上記の部分では、クラスターマスターを初期化し、ノードの追加に使用するトークンを使用して最後の行のコマンドを取得しました。ただし、その前に、ポッドネットワークをインストールする必要があります。
kubectl apply -f https://git.io/weave-kube
ポッドネットワークを使用する方法はたくさんありますが、上記の方法がおそらく最も簡単です。 Linux上のネットワークコンテナの標準として提案されているContainerNetworkInterfaceまたはCNIを使用します。
次に、すべてのノードでこのコマンドを実行して、クラスターにノードを追加できます
kubeadm join --token=bb6fc2.be0345f5b02a32a0 45.55.128.42
トークンはサニタイズされているため、クラスターにノードを追加できませんでした。次に、ポッドをノードだけでなくマスターでも実行できるようにします。
kubectl taint nodes --all dedicated-
この後、ノードをチェックして、すべてがオンラインであるかどうかを確認できます。
kubectl get nodes
マイクロサービスのインストール例
クラスターのテストに使用する簡単なマイクロサービスの例があります。靴下のオンラインショップです。
まず、名前空間の靴下屋を追加します
kubectl create namespace sock-shop
そして、サービスを作成します
kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"
この後、コンテナが作成されるまでしばらく待つ必要があります。その後、新しいサイトにアクセスしてみます。それを訪問するために、私たちはその住所を知らなければなりません。サービスを調べてみましょう
kubectl describe svc front-end -n sock-shop
これに似た出力が得られます
Name: front-end
Namespace: sock-shop
Labels: name=front-end
Selector: name=front-end
Type: NodePort
IP: 10.104.11.202
Port: <unset> 80/TCP
NodePort: <unset> 31500/TCP
Endpoints: 10.32.0.4:8079
Session Affinity: None
No events.
サービスが使用しているポート番号が必要なため、太線が強調表示されています。ポート番号とノードの1つのアドレスを組み合わせる必要があります。そうすれば、サイトにアクセスできます。
結論
これで、CentOS7でkubeadmを使用してKubernetes1.5クラスターを正常に設定できました。この場合は3ノードクラスターですが、kubeadmを使用すると、新しいノードを追加してクラスターを簡単にスケーリングできます。トークンとパブリックIPを使用すると、誰でもクラスターにノードを追加できるため、トークンは必ずプライベートにしてください。これでこの記事は終わりです。お読みいただきありがとうございます。良い一日をお過ごしください。