Kubernetes クイックスタート・デプロイメント
このセクションでは、非実稼働の Sametime ミーティング・サーバーをホストするために使用する、基本的なパイロット版非実稼働 Kubernetes クラスターを速やかにセットアップする方法について説明します。
始める前に
- Docker CE をダウンロードします。
- Ingress Controller を使用して Kubernetes v1.16.0 以降をダウンロードします。システムは DNS で解決可能で、ホスト名を正しく設定されているべきです。
hostnamectl status hostnamectl set-hostname meetings.company.com - スワップを無効にする必要があります。
sed -i '/swap/ s/^/# /' /etc/fstab
# recorderNodeRole: recorder
# videoNodeRole: video
# mainNodeRole: mainこのタスクについて
CentOS7 または RHEL 7 ボックスで稼働する Kubernetes 非実稼働の単一ノード・クラスターをセットアップするには、次の手順を実行します。完了したら 、「Kubernetes を使用した Sametime ミーティングのインストール」の手順に従って、非実稼働の Sametime ミーティング・サーバーをインストールします。
- Linux システムを準備します。
- システムが DNS で解決可能か確認します。
hostnamectl status - ホスト名が正しく設定されていることを確認します。
hostnamectl set-hostname meetings.company.com - スワップを無効にします。
sed -i '/swap/ s/^/# /' /etc/fstab
- システムが DNS で解決可能か確認します。
- Docker CE をインストールするには、以下のコマンドを入力します。
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce mkdir /etc/docker cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } EOF mkdir -p /etc/systemd/system/docker.service.d systemctl daemon-reload systemctl enable docker systemctl restart docker - Kubernetes をインストールするには、以下のコマンドを入力します。
cat<<EOF >/etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl enable --now kubelet - 以下のコマンドを入力して、内部 Kubernetes クラスター・ネットワークを作成し、マスター・ノードの汚染解除を行います。 注: 以下のコマンドは、ネットワーク 192.168.0.0/16 を作成します。DMZ で既にこのネットワークを使用している場合は、別のネットワークを指定してください。
export POD_CIDR=192.168.0.0/16 kubeadm init --pod-network-cidr=$POD_CIDR mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config kubectl taint nodes --all node-role.kubernetes.io/master- - Calico 3.9 をインストールするには、以下のコマンドを入力します。
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml curl -O https://docs.projectcalico.org/v3.9/manifests/calico.yaml sed -i -e "s?192.168.0.0/16?$POD_CIDR?g" calico.yaml kubectl apply -f calico.yaml - Helm をインストールするには、以下のコマンドを入力します。
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash - 次のコマンドを入力して、構成を確認します。
# kubectl get pods -n kube-system The output should look similar to the following: NAME READY STATUS RESTARTS AGE calico-kube-controllers-6b9d4c8765-8tlsb 1/1 Running 0 5m55s calico-node-4wwff 1/1 Running 0 5m55s coredns-6955765f44-79g6n 1/1 Running 0 7m5s coredns-6955765f44-lns5m 1/1 Running 0 7m5s etcd-xxx.xxx.xxx 1/1 Running 0 6m52s kube-apiserver-xxx.xxx.xxx 1/1 Running 0 6m52s kube-controller-manager-xxx.xxx.xxx 1/1 Running 0 6m52s kube-proxy-2mtg5 1/1 Running 0 7m5s kube-scheduler-xxx.xxx.xxx 1/1 Running 0 6m52s - Ingress を有効にします。Sametime ミーティングではインバウンド Web トラフィックを許可するために必要になります。
- まだ実行していない場合は、Flexnet から sametime_meetings.zip をダウンロードして解凍します。
- 抽出されたファイルを含むディレクトリーから、以下のコマンドを実行します。
kubectl apply -f kubernetes/ingress/mandatory.yaml - カスタム証明書を Ingress Controller に適用するには、証明書とプライベート・キーを取得します。次に以下のコマンドを実行して、それらを使用する Ingress を構成します。KEY_FILE にはプライベート・キー・ファイル、CERT_FILE には証明書ファイルを指定します。
export CERT_NAME=ingress-tls-cert export KEY_FILE=privkey.pem export CERT_FILE=fullchain.pem kubectl -n ingress-nginx create secret tls ${CERT_NAME} --key ${KEY_FILE} --cert ${CERT_FILE} kubectl patch deployment nginx-ingress-controller -n ingress-nginx --patch "$(cat kubernetes/ingress/nginx-tls-patch.yaml)"適用するには、Ingress Controller を再起動する必要があります。
kubectl scale deployment nginx-ingress-controller -n ingress-nginx --replicas=0 kubectl scale deployment nginx-ingress-controller -n ingress-nginx --replicas=1
- EFK (Elasticsearch、Fluentd、Kibina) スタック・グローバル・ロギングを使用可能にするには:
- システムでグローバル・ロギングを有効にするには、 sametime_meetings.zip を解凍したディレクトリーから以下のコマンドを実行します。
kubectl create namespace logging kubectl create -f kubernetes/logging/elastic.yaml -n logging kubectl create -f kubernetes/logging/kibana.yaml -n logging kubectl create configmap fluentd-conf --from-file=kubernetes/logging/kubernetes.conf --namespace=kube-system kubectl create -f kubernetes/logging/fluentd-daemonset-elasticsearch-rbac.yaml - ログにアクセスするには、以下のコマンドを実行します。
# kubectl get service -n logging The output should look similar to the following: NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE elasticsearch NodePort 10.102.149.212 <none> 9200:30531/TCP 17m kibana NodePort 10.106.226.34 <none> 5601:32683/TCP 74s上記の例の IP:port 10.106.226.34 は、kibana にアクセスできる場所です。SSH -L 5601:10.106.226.34:32683 を介してそのポートにトンネリングするか、kube-proxy などの Ingress メカニズムを使用してリモート・マシンからアクセスする必要があります。
- システムでグローバル・ロギングを有効にするには、 sametime_meetings.zip を解凍したディレクトリーから以下のコマンドを実行します。
- Prometheus によるモニターを有効にするには:
- sametime_meetings.zip を解凍したディレクトリーから以下のコマンドを実行します。
kubectl create -f kubernetes/monitoring/manifests/setup until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done kubectl create -f kubernetes/monitoring/manifests/ - ダッシュボードにアクセスするには、以下のコマンドを実行します。
# kubectl get service -n monitoring The output should look similar to the following: NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE alertmanager-main ClusterIP 10.102.208.148 <none> 9093/TCP 3m28s alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 3m28s grafana ClusterIP 10.99.202.138 <none> 3000/TCP 3m27s kube-state-metrics ClusterIP None <none> 8443/TCP,9443/TCP 3m27s node-exporter ClusterIP None <none> 9100/TCP 3m27s prometheus-adapter ClusterIP 10.96.21.117 <none> 443/TCP 3m26s prometheus-k8s ClusterIP 10.108.84.189 <none> 9090/TCP 3m26s prometheus-operated ClusterIP None <none> 9090/TCP 3m26s prometheus-operator ClusterIP None <none> 8443/TCPIP:port 10.108.84.189:9090、10.102.208.148:9093、10.99.202.138:3000 はそれぞれ、Prometheus、Alertmanager、Grafana のダッシュボードになります。SSH -L
9090:10.108.84.189:9090 -L 10.102.208.148:9093 -L 3000:10.99.202.138:3000を介してこれらのポートにトンネリングするか、kube-proxy などの Ingress メカニズムを使用してリモート・マシンからアクセスする必要があります。
- sametime_meetings.zip を解凍したディレクトリーから以下のコマンドを実行します。