ホストリスト:
IP | ホスト名 | ノード | CPU | メモリ |
192.168.23.100 | k8smaster | 主人 | 2核 | 2G |
192.168.23.101 | k8snode01 | ノード | 2核 | 2G |
192.168.23.102 | k8snode02 | ノード | 2核 | 2G |
1、yumのローカルソースを設定するには、
yumのソースパケット:
リンクします。https://pan.baidu.com/s/1KAYWlw5Ky2ESUEZVsphQ0Q
ヤムローカルソース構成は、yum.repo /etc/yum.repos.d/ディレクトリにコピーされます。
[ルート@ k8smaster yum.repos.d]#詳細yum.repo
[ソフト]
名=ベース
BASEURL = HTTP://192.168.23.100/yum
gpgcheck = 0
[ルート@ k8smaster yum.repos.d]は#scpコマンドyum.repo 192.168.23.102:/etc/yum.repos.d/
[email protected]'sパスワード:
yum.repo 100%63 0.1キロバイト/ sの夜12時00分
[ルート@ k8smaster yum.repos.d]#scpコマンドyum.repo 192.168.23.101:/etc/yum.repos.d/
[email protected]'sパスワード:
yum.repo
2、修改/ etc / hostsの
[ルート@ k8smaster yum.repos.d]#の猫>> / etc / hostsの<< EOF
> 192.168.23.100 k8smaster
> 192.168.23.101 k8snode01
> 192.168.23.102 k8snode02
> EOF
[ルート@ k8smaster yumを.repos.d]#
3、安装依赖
yumをインストール-y接続追跡にntpdate NTP ipvsadmのipset iptablesのカールsysstatのlibseccomp wgetのVIMのnet-toolsのgitのiproute lrzsz bashの補完ツリーブリッジ-utilsの解凍バインド-utilsのGCC
4、关闭SELinuxの
setenforce 0 &&のsed -iさん/ ^ SELINUX =。* / SELINUX =無効/ 'は/ etc / selinuxを/ configに
5、iptablesのにファイアウォール、ファイアウォールの設定をオフにして、空のルールセット
に近いfirewalld#をし、開始以来、キャンセル
systemctlのSTOP firewalld && systemctl無効firewalld
#iptablesの起動、iptablesのインストール、カイからのブート設定、空のiptablesのルール、デフォルトのルールに現在のルールの保存
yumをiptablesの-サービスをインストール-y &&開始systemctl保存iptablesの&& systemctl有効iptablesの&&のiptables -F &&サービスのiptablesを
6、近いスワップパーティション
#は、[永久]仮想メモリスワップパーティションをオフにし、仮想メモリをオフにします。
するswapoff -a &&のsed -i '/スワップ/ S / ^ \(。* \)$ /#\ 1 / G' の/ etc / fstabに
7、K8Sのカーネル構成パラメータ、
CATは> kubernetes.conf EOF <<
#オープンブリッジモード重要】
net.bridge.bridge-NF-コールのiptables。1 =
重要#オープンブリッジモード]
net.bridge.bridge = ip6tablesをコール- 。NF 1
。net.ipv4.ip_forwardという名前で、=されて1
net.ipv4.tcp_tw_recycle = 0
#は、スワップ領域の使用を禁止、システムだけでは、使用を許可されている場合のみ、OOM
vm.swappiness = 0
#物理メモリの妥当性をチェックしません。
=。1 vm.overcommit_memory
位OOM開く
vm.panic_on_oom = 0
fs.inotify.max_user_instances = 8192
fs.inotify.max_user_watches = 1048576
fs.file-MAX = 52706963
fs.nr_open = 52706963
#IPv6の[閉じる]重要
net.ipv6.confを=。1 .all.disable_ipv6
net.netfilter.nf_conntrack_max = 2310720
EOF
#その最適化されたブート時間を呼び出すことができますファイル、カーネルファイルは/etc/sysctl.d/フォルダにコピーされ、最適化されます
CP kubernetes.conf /etc/sysctl.d/kubernetes.conf
#マニュアルリフレッシュので、即効性と最適化されたファイル
のsysctl -p /etc/sysctl.d/kubernetes.conf
8、システムのタイムゾーンの調整
中国/上海へのシステム領域を設定#
SET-タイムゾーンアジア/上海にtimedatectlを
ハードウェアクロックに#現在のUTC時刻
SET-ローカル-RTC 0 timedatectl
#再起動は、サービスのシステム時間に依存
systemctl再起動rsyslogの
systemctl再起動をcrond
図9は、不要なサービスのダウンシステムシャット
#はシャットダウンして、メールサービスを無効に
systemctl停止後置&& systemctl無効に接尾辞を
10、提供ログの保存
作業で、デフォルトはrsyslogdで、systemdにjournaldの一方で、その2つのログシステムがあるsystem.dにブートモードのでCentos7後、
使用がjournald良くsystemdに、我々は、デフォルトを変更するので、ログを保存する唯一の方法を維持するにsystemd journald、。
1)ログ保存するディレクトリを作成し
ます。mkdirは/ var /ログ/。TECHNOLOGY INFORMATION
2)設定ファイル格納ディレクトリの作成
MKDIRを/etc/systemd/journald.conf.d
3)コンフィギュレーションファイルを作成
猫を> /etc/systemd/journald.conf .D / 99-prophet.conf << EOF
[雑誌]
#永続的にディスクに保存された
ストレージ永続=
#圧縮履歴ログの
圧縮= yesの
SyncIntervalSec = 5メートル
RateLimitInterval = 1930
RateLimitBurst = 1000
#最大容量の10G
SystemMaxUse = 10G
#単一のログ最大ファイルサイズは200M
SystemMaxFileSize = 200M
#時間ログの保存2週間
MaxRetentionSec = 2week
#syslogのログには転送されません
= NO ForwardToSyslog
EOF
。4)。システムDは、Restart構成journald
systemctl再始動にsystemd-journaldを
開いているファイルの数を調整するために11、
エコー"*ソフトNOFILE 65536" >> /etc/security/limits.confを
エコー"*ハードNOFILE 65536" >> /etc/security/limits.confをします
12、升级Linuxの内核为4.44版本
#[k8smaster yum.repos.d @ルート] yumをインストールカーネルlt.x86_64 -y(4.4.213-1.el7.elrepo)
[ルート@ k8smaster yum.repos.d]#AWK -F \」 '$ 1 == "menuentry" {$ 2印刷}' /etc/grub2.cfg
のCentOSのLinux(4.4.213-1.el7.elrepo.x86_64)7(コア)
LinuxでのCentOSのLinux、3.10.0 -123.el7.x86_64
Linuxの0・レスキューb7478dd50b1d41a5836a6a670b5cd8c1とCentOSのLinuxでは、
[ルート@ k8smaster yum.repos.d]#GRUB2-セットデフォルト「のCentOSのLinux(4.4.213-1.el7.elrepo.x86_64)7(コア「)
[ルート@ k8snode01〜]#は、uname -a
Linuxのk8snode01 4.4.213-1.el7.elrepo.x86_64#1 SMP水2月5日午前10時44分50秒EST 2020 x86_64のx86_64のx86_64のGNU / Linuxの
12、の前の開いた状態のKUBE-プロキシIPVS
modprobeはbr_netfilter#netfilterのロードモジュール
CATは> EOF << /etc/sysconfig/modules/ipvs.modules
#/ binに/ bashのを!
modprobeは- ip_vs
のmodprobe - ip_vs_rr
にmodprobe - ip_vs_wrr
modprobeは- ip_vs_sh
のmodprobe - nf_conntrack
EOF
755 /etc/sysconfig/modules/ipvs.modules chmodコマンド
はbash /etc/sysconfig/modules/ipvs.modules
はlsmod | grepを-e -e nf_conntrack_ipv4 ip_vs これらのファイルが向けられているかどうかを見るためにlsmodコマンドを使用して#。
13、取付ドッカー
依存YUMインストールYUM-utilsのデバイスマッパーデータLVM2 -Y-persistent-
YUMドッカーをインストール-Y-CEの #実装ドッカー
作成の/ etc /ドッカディレクトリ
[!-Dの/ etc /ドッキングウィンドウ] &&ます。mkdirは/ etc /ドッカ
配置デーモン
猫> /etc/docker/daemon.json << EOF
{
"EXEC-OPTS":[ "native.cgroupdriver = systemdに"]、
"ログ・ドライバー": "JSONファイル"、
"ログOPTS": {
「最大サイズ」:「100メートル」
}
}
修改docker.service文件
/usr/lib/systemd/system/docker.service
ExecStart =は/ usr / binに/ dockerd -H FD:// --insecure-レジストリ0.0.0.0/0 -H UNIX:/// VAR /実行/ docker.sock -H TCP://0.0.0.0:2375 --containerd = /実行/ containerd / containerd.sock
#重启ドッキングウィンドウ服务
systemctlデーモンリロード&& systemctl再起動ドッカ&& systemctlドッキングウィンドウを有効にします
14、画像保存およびインストール、初期化
ドッキングウィンドウの実行には、-d -p 5000:5000 --restart =常に--nameプライベート・ドッカ-レジストリ--privileged =真-v /データ/レジストリ:は/ var / libに/レジストリ192.168.23.100 :5000 /レジストリ:V1
フランネルネットワークミラーパッケージ
リンクします。https://pan.baidu.com/s/1-DYxDoU2X85aobaGFclKfAの
抽出コード:nson
ベース画像パケットK8S
HTTPS://pan.baidu.com/s/17uV90VPXqoaezwccpTj2GQリンク
抽出コード:13t3を
导入镜像
[ルート@ k8smaster k8s_image]#以上load_image.sh
#/ binに/バッシュ!
LS /ホーム/ zhaiky / k8s_image | grepの-v負荷> /tmp/image-list.txt
CD /ホーム/ zhaiky / k8s_image
私のためにあります$(猫/tmp/image-list.txt)
ん
ドッキングウィンドウの負荷が$ Iは、-i
行わ
RM -rf /tmp/image-list.txt
上传镜像到私有仓库
ドッカプッシュ192.168.23.100:5000/kube-apiserver:v1.15.1
ドッカプッシュ192.168.23.100:5000/kube-proxy:v1.15.1
ドッキングウィンドウプッシュ192.168.23.100:5000/kube-controller-manager:v1 .15.1
ドッキングウィンドウのプッシュ192.168.23.100:5000/kube-scheduler:v1.15.1
ドッキングウィンドウプッシュ192.168.23.100:5000/registry:v1
ドッカプッシュ192.168.23.100:5000/coreos/flannel:v0.11.0-s390x
ドッキングウィンドウプッシュ192.168.23.100 :5000 / coreos /フランネル:v0.11.0-ppc64le
ドッカプッシュ192.168.23.100:5000/coreos/flannel:v0.11.0-arm64
ドッキングウィンドウのプッシュ192.168.23.100:5000/coreos/flannel:v0.11.0-arm
ドッキングウィンドウプッシュ192.168。 23.100:5000 / coreos /フランネル:v0.11.0-amd64の
ドッキングウィンドウのプッシュ192.168.23.100:5000/coredns:1.3.1
ドッキングウィンドウプッシュ192.168.23.100:5000/etcd:3.3.10
ドッキングウィンドウのプッシュ192.168.23.100:5000/pause:3.1
15、安装kubeadm、オムレツ、kubectl
のyum -y kubeadm-1.15.1-オムレツ-kubectlをインストール1.15.1 1.15.1
オムレツは&& systemctlを開始オムレツ有効systemctl
16、自動補完コマンドの有効kubectl
#bashをインストールし、設定-Completion
のyumのbash -Y-完了をインストール
エコー'ソースを/ usr / share / bashの-完了/ bash_completion' >> / etc / profileを
ソースの/ etc /プロファイル
エコー"ソース<(kubectl完了bashの)" >>〜/ .bashrcの
ソース〜/ .bashrcに
17、マスター初期
構成パッケージ、及びkubeadm-config.yaml KUBE-flannel.ymlを含むが内側にある
HTTPS://pan.baidu.com/s/1g0G7Ion0n6lERpluNjh_9Aリンク
抽出コード:6pxt
[ルート@ k8smaster〜]#cpは/home/zhaiky/kubeadm-config.yaml。
kubeadmのinit --config = kubeadm-config.yaml --upload-certsの| ティーkubeadm-init.log
キーロギング
あなたKubernetesコントロールプレーンが正常に初期化されました !
クラスタの使用を開始するには、通常のユーザーとして次のコマンドを実行する必要があります。
ます。mkdir -p $ HOME / .kube
はsudoのcp -i /etc/kubernetes/admin.conf $ HOME / .kube / configに
はsudoをchown $(のid -u):$(IDの-g)$ HOME / .kube /設定
これで、クラスタにポッドネットワークを展開する必要があります。
:実行時に記載されているオプションのいずれかで「[podnetwork] .yaml -f適用kubectl」
https://kubernetes.io/docs/concepts/cluster-administration/addons/
その後、ルートとしてそれぞれに次のことを実行することにより、労働者の任意の数のノードに参加することができます。
kubeadmは192.168.23.100:6443 --token abcdef.0123456789abcdef \参加
78c3f1e110ed1f954665ba55a689397c2dc4d35243dc4516dd00b0bac97172f6:--discoveryトークン-CA-CERT-ハッシュSHA256を
18、プラグの取り付けフランネルネットワーク
[k8smasterルート@〜]#CP /home/zhaiky/kube-flannel.yml。
[K8smasterルート@〜]#KUBE-flannel.yml -f作成kubectl
19、将K8S子节点加入到K8S主节点
kubeadm参加192.168.23.100:6443 --token abcdef.0123456789abcdef --discoveryトークン-CA-CERT-ハッシュSHA256:78c3f1e110ed1f954665ba55a689397c2dc4d35243dc4516dd00b0bac97172f6
[ルート@ k8smaster zhaiky]#kubectl GET CS
NAMEのSTATUS MESSAGE ERRORの
スケジューラ健康OK
コントローラマネージャ健康OK
etcd-0健康{ "健康": "真"}
[ルート@ k8smaster〜]#kubectl GETノード
NAMEのSTATUSの役割AGE VERSION
k8smasterレディーマスター4m58s v1.15.1
k8snode01準備中] <なし> 21S v1.15.1
k8snode02準備中] <なし> 16S v1.15.1
[ルート@ k8smaster〜]#
20、操作简单
使用K8S运行一个nginxの实例
[ルート@ k8smaster〜]#のkubectl実行nginxの--image = 192.168.23.100:5000 / nginxの:V1 --port = 80 --replicas = 1
kubectl実行--generator =展開/apps.v1は廃止されており、将来のバージョンでは削除されます。使用kubectlラン--generator =実行ポッド/ v1または代わりに作成kubectl。
deployment.apps / nginxの作成
[ルート@ k8smaster〜]#
[ルート@ k8smaster〜]#kubectl GETポッド-o広い
NAME READYのステータスが再起動AGE IPノードは準備GATESノミネート
のnginx-5bbb49fb76-xzj6x 1/1を0 59S 10.244を実行します。 1.2 k8snode01 <なし> <なし>
[ルート@ k8smaster〜]#
[ルート@ k8smaster〜]#kubectl GET展開 NAME READY UP-TO-DATE AVAILABLE AGE nginxの1/1 1 1 2m15s [ルート@ k8smaster〜]# [ルート@ k8smaster〜]#のカール"http://10.244.1.2" nginxのへの<title>へようこそ!</タイトル> [ルート@ k8smaster〜]#は、展開を公開kubectl nginxの--port = 80 --type =ロードバランササービス/ nginxの暴露[ルート@ k8smaster〜]#kubectl GETサービス NAME TYPEクラスタ- IP EXTERNAL-IP PORT(S)は、AGEはCLUSTERIP 10.96.0.1 <なし> 443 / TCP 14H kubernetes 32461 / TCPの13S:nginxのロードバランサ10.99.225.215 <保留> 80 [ルート@ k8smaster〜]#を
[ルート@ k8smaster〜]#のカール"http://192.168.23.101:32461"
<タイトル> nginxのへようこそ!</タイトル>
[ルート@ k8smaster〜]#のカール"http://10.99.225.215"
<タイトル> nginxのへようこそ!</ TITLE>