Kubeadmを使用したKubernetesの導入
導入環境
1つのMasterノード、2つのノード.すべてのノードのコンピュータ名を構成し、hostsポインタを構成し、最後に統一時間同期サーバを構成します.
Master:192.168.6.102(kubernetes-master)
Node1:192.168.6.104(kubernetes-node1)
Node2:192.168.6.105(kubernetes-node2)
システムバージョン:CentOS Linux release 7.5.1804(Core)
Dockerバージョン:docker-ce-17.03.0
Kubernetesバージョン:1.12.0
配備方法:Kubeadm
SELinuxを閉じ、ファイアウォールルールをクリア
Docker配備
注:すべてのノードを配置する必要があります
インストールパッケージのダウンロード
インストール
Dockerを起動し、POSTを設定します.
専用のアリクラウドDocker公式ミラーウェアハウスアクセラレータを構成するには、まずアリクラウドアカウントを登録し、「コンテナミラーサービス」に入ってミラーアクセラレータを見つける必要があります.公式ドキュメントの説明に従って構成すればいいです.
Masterノードの配備
構成yumプロファイルの追加
インストールソフトウェア:クラスタの初期化前に起動することはできません.その後、クラスタの初期化時に自動的に起動しますが、起動自起動に設定する必要があります.そうしないと、初期化時に警告が表示されます.
必要なミラーをダウンロード
注意:デフォルトでは、このサイトは国内ではダウンロードできません.うまくインストールできるように、壁の外のサーバを使用してDockerを配置し、kubeadmをインストールし、このコマンドを実行してミラーをローカルにダウンロードし、壁にパッケージしてコピーすることが望ましいです.
クラスタ初期化環境の準備
一時的に交換パーティションを閉じる必要があります.そうしないと、初期化時にエラーが発生します.fstabファイルで交換パーティションの行を永久に注釈すればいいです.
IPv 4透明ブリッジを開くには、IPv 4を使用するため、net.bridge.bridge-nf-call-iptablesパラメータと、すなわち
Masterクラスタの初期化を開始
--pod-network-cidr: Podセグメントを指定します.デフォルトは10.244.00/16です.
--service-cidr: サービス・セグメントを指定します.デフォルトは10.96.0.12です.
--kubernetes-version: kubernetesバージョンを指定します.異なる時間にインストールされるkubeadmバージョンは異なり、サポートされるデプロイメントのkubernetesバージョンも異なり、サポートされていない場合はエラーメッセージが表示されます.
--apiserver-advertise-address: apiserverリスニングアドレスを指定し、デフォルトリスニング0.0.0.0
--apiserver-bind-port: apiserverリスニングポートの指定、デフォルト6443
--ignore-preflight-errors: 指定されたエラーメッセージは無視されます.デフォルトではswapが開いているとエラーが表示されます.Swapが閉じている場合は指定しなくてもいいです.
正常にインストールされると、kubectlコンソールの構成とnodeノードの追加方法のプロンプトが表示されます.
メッセージ・ログが表示されます.次のようなエラー・プロンプトがある場合は
「/var/lib/kubelet/kubeadm-flags.env」プロファイルを変更し、「--network-plugin=cni」を削除し、kubeletサービスを再起動します.
kubectlコンソールの構成
注意:一般ユーザーによる実行を推奨するプロンプトが表示されますので、sudo権限が必要です.ここで直接rootします.
この場合、次のコマンドを使用してKubernetesの基本情報を表示できます.
kubectl get ns すべての名前空間を表示
kubectl get cs 健康状態の確認
kubectl get nodes すべてのノード情報を表示
kubectl get pods すべてのpods情報を表示
flannelネットワークコンポーネントの導入
導入前にpodネットワークが指定したネットワークを変更する必要があります.デフォルトの10.244.0.0/16を使用すると、変更する必要がなく、次のコマンドのインストールを直接実行できます.
注意:flannelを配備する時も自動的に関連するミラーをダウンロードして、先にymlファイルを開けてどのミラーが先にpullをダウンロードしてから配備を実行する必要があるかを見ることができます
Masterノードが正常に動作しているかどうかを確認します
健康状態の確認
podsのステータスの表示
Nodesのステータスの表示
クラスタ・サービスのステータスの表示
ノードの配置
Masterノードと同様にyum repoファイルを構成する
ソフトウェアのインストール
ノードをクラスタに追加
注意:swapを無効にし、透明なブリッジを開く必要があります.さらに、ノードは、k 8 s.gcr.io/kube-proxy quay.io/coreos/flannel k 8 s.gcr.io/pauseの3つのミラーを使用する必要があります.この3つのミラーは、プライマリノードsaveから降りて、次のコマンドを実行してクラスタに参加することができます.このコマンドは、プライマリノードの初期化が完了した後、最後に出力されるコマンドです.
参加に成功したら、次の情報を提示します.
Masterノードに戻ってNodeノードの状況を確認
Nodeステータスの表示
Pod状況の表示
注:2つのflannelとproxyが実行され、それぞれプライマリノードとノードノードで実行されます.
これでノードの追加に成功し、このメソッドをループして他のノードに追加します.
1つのMasterノード、2つのノード.すべてのノードのコンピュータ名を構成し、hostsポインタを構成し、最後に統一時間同期サーバを構成します.
Master:192.168.6.102(kubernetes-master)
Node1:192.168.6.104(kubernetes-node1)
Node2:192.168.6.105(kubernetes-node2)
システムバージョン:CentOS Linux release 7.5.1804(Core)
Dockerバージョン:docker-ce-17.03.0
Kubernetesバージョン:1.12.0
配備方法:Kubeadm
SELinuxを閉じ、ファイアウォールルールをクリア
Docker配備
注:すべてのノードを配置する必要があります
インストールパッケージのダウンロード
cd /usr/local/src/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
インストール
yum -y install docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
Dockerを起動し、POSTを設定します.
systemctl start docker && systemctl enable docker
専用のアリクラウドDocker公式ミラーウェアハウスアクセラレータを構成するには、まずアリクラウドアカウントを登録し、「コンテナミラーサービス」に入ってミラーアクセラレータを見つける必要があります.公式ドキュメントの説明に従って構成すればいいです.
Masterノードの配備
構成yumプロファイルの追加
[Kubernetes]
name=Kubernetes repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enable=0
インストールソフトウェア:クラスタの初期化前に起動することはできません.その後、クラスタの初期化時に自動的に起動しますが、起動自起動に設定する必要があります.そうしないと、初期化時に警告が表示されます.
yum install kubeadm kubectl
systemctl enable kubelet
必要なミラーをダウンロード
kubeadm config images pull
注意:デフォルトでは、このサイトは国内ではダウンロードできません.うまくインストールできるように、壁の外のサーバを使用してDockerを配置し、kubeadmをインストールし、このコマンドを実行してミラーをローカルにダウンロードし、壁にパッケージしてコピーすることが望ましいです.
クラスタ初期化環境の準備
swapoff -a
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
一時的に交換パーティションを閉じる必要があります.そうしないと、初期化時にエラーが発生します.fstabファイルで交換パーティションの行を永久に注釈すればいいです.
IPv 4透明ブリッジを開くには、IPv 4を使用するため、net.bridge.bridge-nf-call-iptablesパラメータと、すなわち
Masterクラスタの初期化を開始
kubeadm init --pod-network-cidr=10.42.0.0/16 --service-cidr=10.8.0.0/16 --kubernetes-version=v1.12.0 --apiserver-advertise-address=0.0.0.0 --apiserver-bind-port=6443 --ignore-preflight-errors=Swap
--pod-network-cidr: Podセグメントを指定します.デフォルトは10.244.00/16です.
--service-cidr: サービス・セグメントを指定します.デフォルトは10.96.0.12です.
--kubernetes-version: kubernetesバージョンを指定します.異なる時間にインストールされるkubeadmバージョンは異なり、サポートされるデプロイメントのkubernetesバージョンも異なり、サポートされていない場合はエラーメッセージが表示されます.
--apiserver-advertise-address: apiserverリスニングアドレスを指定し、デフォルトリスニング0.0.0.0
--apiserver-bind-port: apiserverリスニングポートの指定、デフォルト6443
--ignore-preflight-errors: 指定されたエラーメッセージは無視されます.デフォルトではswapが開いているとエラーが表示されます.Swapが閉じている場合は指定しなくてもいいです.
正常にインストールされると、kubectlコンソールの構成とnodeノードの追加方法のプロンプトが表示されます.
[markmaster] Marking the node kubernetes-master as master by adding the label "node-role.kubernetes.io/master=''"
[markmaster] Marking the node kubernetes-master as master by adding the taints [node-role.kubernetes.io/master:NoSchedule]
[patchnode] Uploading the CRI Socket information "/var/run/dockershim.sock" to the Node API object "kubernetes-master" as an annotation
[bootstraptoken] using token: 9jefj3.czyghatvpi8mqamz
[bootstraptoken] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstraptoken] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstraptoken] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstraptoken] creating the "cluster-info" ConfigMap in the "kube-public" namespace
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join 192.168.6.102:6443 --token 9jefj3.czyghatvpi8mqamz --discovery-token-ca-cert-hash sha256:4126634b062c39f2bc3ef3ba5aa717e95a54aa16889ccb820bdb548c961b8d97
メッセージ・ログが表示されます.次のようなエラー・プロンプトがある場合は
Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
「/var/lib/kubelet/kubeadm-flags.env」プロファイルを変更し、「--network-plugin=cni」を削除し、kubeletサービスを再起動します.
kubectlコンソールの構成
注意:一般ユーザーによる実行を推奨するプロンプトが表示されますので、sudo権限が必要です.ここで直接rootします.
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
この場合、次のコマンドを使用してKubernetesの基本情報を表示できます.
kubectl get ns すべての名前空間を表示
kubectl get cs 健康状態の確認
kubectl get nodes すべてのノード情報を表示
kubectl get pods すべてのpods情報を表示
flannelネットワークコンポーネントの導入
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i "/10.244/s/244/42/" kube-flannel.yml
kubectl apply -f kube-flannel.yml
導入前にpodネットワークが指定したネットワークを変更する必要があります.デフォルトの10.244.0.0/16を使用すると、変更する必要がなく、次のコマンドのインストールを直接実行できます.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
注意:flannelを配備する時も自動的に関連するミラーをダウンロードして、先にymlファイルを開けてどのミラーが先にpullをダウンロードしてから配備を実行する必要があるかを見ることができます
Masterノードが正常に動作しているかどうかを確認します
健康状態の確認
$ kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health": "true"}
podsのステータスの表示
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-576cbf47c7-h9js2 1/1 Running 0 64m
coredns-576cbf47c7-zf9hd 1/1 Running 0 64m
etcd-kubernetes-master 1/1 Running 0 64m
kube-apiserver-kubernetes-master 1/1 Running 0 64m
kube-controller-manager-kubernetes-master 1/1 Running 0 64m
kube-flannel-ds-amd64-96988 1/1 Running 0 61m
kube-proxy-h7xg2 1/1 Running 0 64m
kube-scheduler-kubernetes-master 1/1 Running 0 64m
Nodesのステータスの表示
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubernetes-master Ready master 65m v1.12.0
クラスタ・サービスのステータスの表示
kubectl get svc -n kube-system
ノードの配置
Masterノードと同様にyum repoファイルを構成する
ソフトウェアのインストール
yum install kubeadm kubelet
ノードをクラスタに追加
注意:swapを無効にし、透明なブリッジを開く必要があります.さらに、ノードは、k 8 s.gcr.io/kube-proxy quay.io/coreos/flannel k 8 s.gcr.io/pauseの3つのミラーを使用する必要があります.この3つのミラーは、プライマリノードsaveから降りて、次のコマンドを実行してクラスタに参加することができます.このコマンドは、プライマリノードの初期化が完了した後、最後に出力されるコマンドです.
kubeadm join 192.168.6.102:6443 --token 9jefj3.czyghatvpi8mqamz --discovery-token-ca-cert-hash sha256:4126634b062c39f2bc3ef3ba5aa717e95a54aa16889ccb820bdb548c961b8d97
参加に成功したら、次の情報を提示します.
[preflight] running pre-flight checks
[WARNING RequiredIPVSKernelModulesAvailable]: the IPVS proxier will not be used, because the following required kernel modules are not loaded: [ip_vs_rr ip_vs_wrr ip_vs_sh ip_vs] or no builtin kernel ipvs support: map[ip_vs:{} ip_vs_rr:{} ip_vs_wrr:{} ip_vs_sh:{} nf_conntrack_ipv4:{}]
you can solve this problem with following methods:
1. Run 'modprobe -- ' to load missing kernel modules;
2. Provide the missing builtin kernel ipvs support
[WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
[discovery] Trying to connect to API Server "192.168.6.102:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://192.168.6.102:6443"
[discovery] Requesting info from "https://192.168.6.102:6443" again to validate TLS against the pinned public key
[discovery] Cluster info signature and contents are valid and TLS certificate validates against pinned roots, will use API Server "192.168.6.102:6443"
[discovery] Successfully established connection with API Server "192.168.6.102:6443"
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.12" ConfigMap in the kube-system namespace
[kubelet] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[preflight] Activating the kubelet service
[tlsbootstrap] Waiting for the kubelet to perform the TLS Bootstrap...
[patchnode] Uploading the CRI Socket information "/var/run/dockershim.sock" to the Node API object "kubernetes-node1" as an annotation
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the master to see this node join the cluster.
Masterノードに戻ってNodeノードの状況を確認
Nodeステータスの表示
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubernetes-master Ready master 158m v1.12.0
kubernetes-node1 Ready 3m55s v1.12.0
Pod状況の表示
注:2つのflannelとproxyが実行され、それぞれプライマリノードとノードノードで実行されます.
$ kubectl get pods -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
coredns-576cbf47c7-h9js2 1/1 Running 0 164m 172.17.0.3 kubernetes-master
coredns-576cbf47c7-zf9hd 1/1 Running 0 164m 172.17.0.2 kubernetes-master
etcd-kubernetes-master 1/1 Running 0 164m 192.168.6.102 kubernetes-master
kube-apiserver-kubernetes-master 1/1 Running 0 164m 192.168.6.102 kubernetes-master
kube-controller-manager-kubernetes-master 1/1 Running 0 164m 192.168.6.102 kubernetes-master
kube-flannel-ds-amd64-96988 1/1 Running 0 161m 192.168.6.102 kubernetes-master
kube-flannel-ds-amd64-kpcpr 1/1 Running 0 10m 192.168.6.104 kubernetes-node1
kube-proxy-h7xg2 1/1 Running 0 164m 192.168.6.102 kubernetes-master
kube-proxy-pw5ck 1/1 Running 0 10m 192.168.6.104 kubernetes-node1
kube-scheduler-kubernetes-master 1/1 Running 0 164m 192.168.6.102 kubernetes-master
これでノードの追加に成功し、このメソッドをループして他のノードに追加します.