基本的な環境
ファイアウォール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