kubernetes lowBインストール

オフラインインストールパッケージをkubernetes、わずか3ステップ

基本的な環境

ファイアウォールSELinuxをオフにします

$ systemctl stop firewalld && systemctl disable firewalld
$ setenforce 0

フォワード打开
のsysctl -w net.ipv4.ip_forward = 1

閉じるスワップ

するswapoff -a
削除スワップと、その後の/ etcライン/ fstabファイルは、無視しません

あなたは、インストールされ、これらの2つのツールをインストールしない場合は、

yumをインストール-y ebtablesのsocatに関する

IPv4 iptablesのチェーンは、CNIのプラグインが必要な設定しました

sysctlのnet.bridge.bridge-NF-CALL-のiptables = 1

ウォールのインストール

インストールされているこのような方法で使用することは困難である国では、オフラインインストールプログラムを表示することをお勧めします

ロードドッカ

yumを-yドッキングウィンドウがインストール
ドッキングウィンドウを有効systemctl &&ドッキングウィンドウを起動しsystemctl

ロードkubeadm kubectl kubelet

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
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

閉じるSElinuxが

setenforce 0

猫<

そして、オフラインインストールのマスターで始めることは何ら変わり、kubeadmの初期化ではありません

オフラインインストール

福祉、私はすべての従属画像、バイナリファイルを持って、コンフィギュレーション・ファイルは、あなたの依存のすべてを解決するためにパッケージに殴られ、私たちは小さなサポートすることを願って、アリの雲が市場に置かれ、これをソートするために多くの時間を費やして
報酬をくれカップコーヒー

操作の最も内側のこのパッケージはinit-node.shダッシュボード実行init-dashboard.shをインストールし、実行init-master.shマスターノードノードノードの実装では、内部の簡単なスクリプトで記述されています。

その後、ノードのうち、joinコマンドマスター出力ノードを実行することができます。パッケージの最大値には依存性がないことである、ともはや外国Mouwangへのアクセスではない頭痛を持っていません。

Kubeletインストールサービス、およびkubeadm

ダウンロードbinファイルの住所

以下kubelet kubectl kubeadmは/ usr / binに直接ダウンロードしたコピー

Kubeletにsystemdサービスの構成

cat <<EOF > /etc/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=http://kubernetes.io/docs/

[Service]
ExecStart=/usr/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
cat <<EOF > /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"
Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS
EOF

ここでの考え方は一貫してドッキングウィンドウのcgroupのドライバと--cgroup-ドライバーのニーズを見ることです。情報をドッカーすることができます|グレップのcgroupビュー、そこにsystemdまたはcgroupfsてもよいです

ホスト名の解決を増やします

、ホスト名を解決するマッピングされたホスト名の/ etc / hostsファイルを変更し、IPを書きません防ぐために

マスターノードを開始します

ここでは、投票を降りする方法を見つけるために、ミラーをGoogleに持っています

kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version v1.8.0 --skip-preflight-checks
  • ときに必要な--pod-ネットワークのCIDRネットワークインストールはキャラコパラメータ
  • 要求なし--kubernetes-バージョンは、その後、公共問い合わせバージョン情報に移動します
  • --skip-プリフライトチェックはkubeletディレクトリが空の小さなバグではありません解決します

あなたが見た場合、これらの出力は成功するでしょう。

To start using your cluster, you need to run (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:
  http://kubernetes.io/docs/admin/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>

シャイニング実行:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

ネットワークインストール更紗

kubectl apply -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml

ノードノードに参加

同様に、ノードとノード設置kubeletのkubeadm、同じマスターノードの動作は、繰り返しません。
そして、コマンドのマスターノードのinit出力を実行します。

  kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>

かどうかの健康とマスターノードの実装が完了した後kubectl検証ノード

[root@dev-86-202 ~]# kubectl get nodes
NAME         STATUS     ROLES     AGE       VERSION
dev-86-202   NotReady   master    17h       v1.8.1

デフォルトのノードではないとして、マスターノードに注意し、また、推奨ノードノード。あなたは時にノードをマスターする必要がある場合:

[root@dev-86-202 ~]# kubectl taint nodes --all node-role.kubernetes.io/master-

インストールのダッシュボード

ダッシュボードには、インストールが簡単で、少し周りに本当に使い、主にRBAC、簡単なご紹介します

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml

nodeportアクセスを使用して、インストールした後

kubectl -n kube-system edit service kubernetes-dashboard

タイプ:CLUSTERIP変化型:NodePortと保存

$ kubectl -n kube-system get service kubernetes-dashboard
NAME                   CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   10.100.124.90   <nodes>       443:31707/TCP   21h

https://でMASTERIP:31707しかし、ダッシュボードにアクセスすることができます。まだできません。

ダッシュボードadmin.yamlを作成します

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system

-fダッシュボードadmin.yamlを作成kubectl

そして、インターフェースポイントでそれに直接スキップし、しかし、あなたが知っている、これは安全ではありません。真のセキュリティ対策は、さらなる議論のために私に注意を払ってくださいます。https://github.com/fanux

ノードの役割に追加

kubectl label node node1 kubernetes.io/role=node

よくある質問

kubeletサービスが開始されませんか?

cgroupのドライバの設定が同じになるように

[表示]ドッキングウィンドウのcgroupのドライバ:

docker info|grep Cgroup

そこにsystemdと契約kubeletサービス構成の変更とドッキングウィンドウの2種類をcgroupfs

Vimの/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

KUBELET_CGROUP_ARGS = - cgroup内ドライバ= cgroupfs#この設定変更は、ドッカーと一致しています

ノード準備ができていませんか?

あなたがマスターノードノードノードは、コマンドを追加する必要があるとしたい提案インストールキャラコネットワーク:

[root@dev-86-202 ~]# kubectl taint nodes --all node-role.kubernetes.io/master-

ダッシュボードには、訪問しませんか?

NodePortアクセスした場合、それはノードまで行くには、特定のスケジューリングのダッシュボードサービスを知っている必要があります。代わりにIPマスターのノードIPにアクセスします。
、その後、httpをhttpsにしてみてください変更しません。

ここで特定のノードを見ます

kubectl get pod -n kube-system -o wide

プルミラーは失敗しますか?

ノードは、マスタノードをミラーリングすることができ、ノードは、各ノードの負荷です。

ダッシュボードのクラッシュ、DNSが立ち上がっ?

ノードは、マスタノードをミラーリングすることができ、ノードは、各ノードの負荷です。

192.168ネットワークセグメントとキャラコの競合?

あなたも192.168セグメントに起これば、キャラコネットワークセグメントを変更することをお勧めします

このような初期化

kubeadm init --pod-network-cidr=192.168.122.0/24 --kubernetes-version v1.8.1

calico.yamlを変更

    - name: FELIX_DEFAULTENDPOINTTOHOSTACTION
      value: "ACCEPT"
    # Configure the IP Pool from which Pod IPs will be chosen.
    - name: CALICO_IPV4POOL_CIDR
      value: "192.168.122.0/24"
    - name: CALICO_IPV4POOL_IPIP
      value: "always"
    # Disable IPv6 on Kubernetes.
    - name: FELIX_IPV6SUPPORT
      value: "false"

まで取得するのに長い時間のためのDNSの?

DNSミラー負荷が成功した場合、それは始動が正常に起動せずに、シングルコア2G 15分に友人が非常に遅くなり、低すぎるマシン構成かもしれません。私たちは、デュアルコア4Gより多くのリソースをお勧めします

あなたが起きた場合、それは顧客を持っているものを再度リセットkubeadmしてください。この方法でこの問題を解決することです。

オムレツ不健康?

[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10255/healthz/syncloop' failed with error: Get http://localhost:10255/healthz/syncloop: dial tcp 127.0.0.1:10255: getsockopt: connection refused.
[kubelet-check] It seems like the kubelet isn't running or healthy.

すでにそれを削除し、存在manifastすることができます。

[root@dev-86-205 kubeadm]# rm -rf /etc/kubernetes/manifests

24時間以上、プラスノードに行きませんか?

[root@dev-86-208 test]# kubeadm token create
[kubeadm] WARNING: starting in 1.8, tokens expire after 24 hours by default (if you require a non-expiring token use --ttl 0)
887ac7.e82f0e13ad72c367

あなたは無期限にする場合はinitが0 TTLに設定されている上記のコマンドは、実行kubeadmがそれに参加する時には、上記のトークンに置き換え何トークン、再生します

--token-TTL期間

容器山のキャラコポッド、カリコノード「XXX」は既にIPv4アドレス192.168.152.65を使用しています

rm -rf /var/etcd/
kubeadm reset

リロード

カード現地プルミラーリング

ファイアウォールとSELinuxをオフにします

$ systemctl stop firewalld && systemctl disable firewalld
$ setenforce 0
$ echo 'Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"' > /etc/systemd/system/kubelet.service.d/90-local-extras.conf
$ systemctl daemon-reload
$ systemctl restart kubelet

「/system.slice/docker.service」のためのシステムコンテナの統計情報の取得に失敗しました

kubelet起動パラメータプラス:

--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice

ノードは参加できません

DNSのない参加するまで、またはいないサーバーの時刻同期

外部etcdを指定するには、クラスタ構成ファイルを使用します

config.yaml:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
  endpoints:
  - http://10.1.245.94:2379
networking:
  podSubnet: 192.168.0.0/16
kubernetesVersion: v1.8.1

etcd.yaml:

version: '2'
services:
    etcd:
        container_name: etcd_infra0
        image: quay.io/coreos/etcd:v3.1.10
        command: |
                etcd --name infra0
                --initial-advertise-peer-urls http://10.1.245.94:2380
                --listen-peer-urls http://10.1.245.94:2380
                --listen-client-urls http://10.1.245.94:2379,http://127.0.0.1:2379
                --advertise-client-urls http://10.1.245.94:2379
                --data-dir /etcd-data.etcd
                --initial-cluster-token etcd-cluster-1
                -initial-cluster infra0=http://10.1.245.94:2380
                --initial-cluster-state new
        volumes:
           - /data/etcd-data.etcd:/etcd-data.etcd
        network_mode: "host"

`` `
ドッカ・コンインストールPIP $
$は、-fがアップetcd.yamlドッキングウィンドウ-構成-d
$ kubeadmのinit --config config.yaml

sealyunスキャンコード懸念

QQグループを追加することができ調査:98488045

おすすめ

転載: www.cnblogs.com/sealyun/p/11315254.html