1.背景;
kubeadmを使用して、クラスタの展開K8S、同社のK8S展開シナリオを簡素化し、オンラインとオフラインの次元クラスタリング部門に従うことにより、あなたは:. 1つの展開を迅速かつ簡単にkubeadm使用したい2つの主な理由があり、簡単に拡張ノード3を2.k8s展開は困難さを軽減します。
2.システム環境は、
システムバージョン | カーネルのバージョン | etcd | リマーク |
CentOSのLinuxのリリース1804年7月5日 | 3.10.0-862.14.4.el7.x86_64 | etcdctlバージョン:3.3.11 | |
3.関連するコンポーネントバージョン。
kubeadminコンポーネント名 | コンポーネントのバージョン名 | リマーク |
k8s.gcr.io/kube-apiserver |
v1.13.4 |
KUBE-apiserver Kubernetesは、主に以下の機能を提供し、最も重要なコア構成要素の一つであります
|
k8s.gcr.io/kube-controller-manager |
v1.13.4 |
KUBE-スケジューラは、クラスタ内のノードするスケジューリングポッドを割り当てる責任があり、それはKUBE-apiserverをリッスンし、クエリPODが割り当てられていないノード、及びそれらのポッド配信ノードのスケジューリングポリシーに従って(のポッド更新 スケジューラは、完全に多くの要因を考慮する必要があります。
|
k8s.gcr.io/kube-scheduler |
v1.13.4 |
KUBEコントローラマネージャとクラウド・コントローラマネージャ組成のコントローラマネージャは、apiserverによってクラスタ全体の状態を監視し、クラスタが予想される動作条件にあることを確認し、脳のKubernetesあります。 |
k8s.gcr.io/kube-proxy |
v1.13.4 |
各マシンには、負荷分散サービス(のみTCPとUDPをサポートしています)を設定するには、サービスのAPIサーバとエンドポイントの変化を監視KUBE-プロキシサービスを実行し、その上のiptablesによる。 KUBE-プロキシは、静的ポッドまたはdaemonset方法で実行することができ、物理マシン上で直接実行することができます。 |
k8s.gcr.io/pause | 3.1 | 各ポッドのためのKubernetesは唯一のネットワークコンテナを追加することにより、コンテナネットワーク情報ポッド、ビジネスコンテナネットワーク共有ネットワークを引き継ぐために、gcr.io/google_containers/pause:latestの子会社です。名前「一時停止」として作成し、作成、削除、およびポッドを削除するには、ポッドとコンテナ、 コンテナは、ポッドの名前空間の操作を解析されます。 |
k8s.gcr.io/coredns | 1.2.6 | DNSは、ネームサービスを提供するために不可欠な機能拡張のクラスタとしてKUBE-DNSまたはCoreDNSによってKubernetesのコア機能の一つです。 |
weaveworks /織り |
2.5.2 |
織ネットは、マルチホストコンテナネットワークプログラムは、ゴシップを介してフルメッシュTCP接続の確立を介して各ホストの間wRouterの中心、及び同期制御情報を制御プレーンをサポートすることです。これは、集中的K / Vストアの必要性を排除し、展開の複雑さは、ある程度まで減少させることができます |
4.アプリケーションの。
以下に示すように(1)クラスタは通常動作を有します。
2.チェック配備構成を、
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-dp spec: selector: matchLabels: app: nginx-dp replicas: 1 template: metadata: labels: app: nginx-dp spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80
3.查看ervice 配置;
apiVersion: v1 kind: Service metadata: name: nginx-dp-cpf spec: type: NodePort ports: - nodePort: 30001 port: 80 targetPort: 80 protocol: TCP selector: app: nginx-dp
4.查看生成endpoints
5.查看service 规则;
6.查看由kube-proxy 生成的iptables 防火墙规则; (正常规则)
注意:
1.如果防火墙规则出现 类似如下规则:
-A KUBE-EXTERNAL-SERVICES -p tcp -m comment --comment "default/nginx-dp-cpf: has no endpoints" -m addrtype --dst-type LOCAL -m tcp --dport 30001 -j REJECT --reject-with icmp-port-unreachable
2.解决办法;
(1).net.ipv4.ip_forward = 1 #系统内核路由转发功能
(2).iptables -P FORWARD ACCEPT #允许 iptables FORWARD 链规则通过;
(3).iptables -P OUTPUT ACCEPT #允许 iptables OUTPUT 链规则通过;
(4).检查deployment labels 和 service labels 设置是否关联正确;
(5).kubectl get endpoints --show-labels #注意此规则和防火墙规则匹配 若出现none 请检查防火墙规则;
7.进行功能测试 (k8s 集群内进行测试);