はじめに
この記事は ローカルでkubernetes環境を構築する(kubeadm)でkubernetes環境(以下、k8s) を作成した人向けです。
開発環境
Ubuntu 18.04
手順
まず、コントロールプレーンノードでポッドをスケジュールするため以下を実行します。
kubectl taint nodes --all node-role.kubernetes.io/master-
この作業がないとhelmのtiller pod がpendingのまま動きません。
次にhelmをインストールし、初期化します。
sudo snap install helm --classic
helm init --history-max 200
tiller pod が作成されたはずなので見てみます。
追記:
helmが更新されたため、この方法だと以下の作業ができなくなりました。最新バージョンではなく以下の方法でインストールしてください。
snap install --channel=2.16 helm --classic
kubectl get po -n kube-system
tiller-deploy-〜のpodがあれば正常です。pod の状態はPending -> ContainerCreating -> RunningとなるのでRunningするまで待ちます。
次にistioをインストールします。istioとはマイクロサービスを管理するOSSです。
export ISTIO_VERSION=1.1.7
curl -L https://git.io/getLatestIstio | sh -
cd istio-${ISTIO_VERSION}
for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Namespace
metadata:
name: istio-system
labels:
istio-injection: disabled
EOF
# A lighter template, with just pilot/gateway.
# Based on install/kubernetes/helm/istio/values-istio-minimal.yaml
helm template --namespace=istio-system \
--set prometheus.enabled=false \
--set mixer.enabled=false \
--set mixer.policy.enabled=false \
--set mixer.telemetry.enabled=false \
`# Pilot does not need a sidecar.`\
--set pilot.sidecar=false \
--set pilot.resources.requests.memory=128Mi \
`# Disable galley (and things requiring galley).` \
--set galley.enabled=false \
--set global.useMCP=false \
`# Disable security / policy.` \
--set security.enabled=false \
--set global.disablePolicyChecks=true \
`# Disable sidecar injection.` \
--set sidecarInjectorWebhook.enabled=false \
--set global.proxy.autoInject=disabled \
--set global.omitSidecarInjectorConfigMap=true \
`# Set gateway pods to 1 to sidestep eventual consistency / readiness problems.` \
--set gateways.istio-ingressgateway.autoscaleMin=1 \
--set gateways.istio-ingressgateway.autoscaleMax=1 \
`# Set pilot trace sampling to 100%` \
--set pilot.traceSampling=100 \
install/kubernetes/helm/istio \
> ./istio-lean.yaml
kubectl apply -f istio-lean.yaml
# from https://github.com/helm/helm/issues/4181
kubectl taint nodes --all node-role.kubernetes.io/master-
# Add the extra gateway.
helm template --namespace=istio-system \
--set gateways.custom-gateway.autoscaleMin=1 \
--set gateways.custom-gateway.autoscaleMax=1 \
--set gateways.custom-gateway.cpu.targetAverageUtilization=60 \
--set gateways.custom-gateway.labels.app='cluster-local-gateway' \
--set gateways.custom-gateway.labels.istio='cluster-local-gateway' \
--set gateways.custom-gateway.type='ClusterIP' \
--set gateways.istio-ingressgateway.enabled=false \
--set gateways.istio-egressgateway.enabled=false \
--set gateways.istio-ilbgateway.enabled=false \
install/kubernetes/helm/istio \
-f install/kubernetes/helm/istio/example-values/values-istio-gateways.yaml \
| sed -e "s/custom-gateway/cluster-local-gateway/g" -e "s/customgateway/clusterlocalgateway/g" \
> ./istio-local-gateway.yaml
kubectl apply -f istio-local-gateway.yaml
Knativeをインストールします。
kubectl apply --selector knative.dev/crd-install=true \
--filename https://github.com/knative/serving/releases/download/v0.9.0/serving.yaml \
--filename https://github.com/knative/eventing/releases/download/v0.9.0/release.yaml \
--filename https://github.com/knative/serving/releases/download/v0.9.0/monitoring.yaml
kubectl apply --filename https://github.com/knative/serving/releases/download/v0.9.0/serving.yaml \
--filename https://github.com/knative/eventing/releases/download/v0.9.0/release.yaml \
--filename https://github.com/knative/serving/releases/download/v0.9.0/monitoring.yaml
すべてのpodがRunningしたら完了です。
以下のコマンドで確認してください。
kubectl get po -A
お疲れ様でした。
参考文献
kube-system tiller-deploy-f9b8476d-zkln4 always pending by failed scheduling · Issue #4181 · helm/helm
how to fix this? Output of helm version: Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710",...
https://knative.dev/docs/install/knative-with-any-k8s/
コメント