メインコンテンツにスキップ

k8s で使用可能なクラスターをデプロイする

(製造とテスト用)

环境配置:

折りたたむ

事前準備

hosts 設定を追加

# echo '192.168.50.7 k8s-master01' >> /etc/hosts
# echo '192.168.50.19 k8s-master02' >> /etc/hosts
# echo '192. 68.50.21 k8s-master0' >> /etc/hosts
# echo '192.168.50.8 k8s-node01' >> /etc/hosts
# echo '192. 68.50.14 k8s-node02' >> /etc/hosts
# echo '192.168.50.17 k8s-node03' >> /etc/hosts
# echo '192.168.50.18 db_server_server' /etc/hosts
# echo '192.168.50.20middlewareserver' /server' /etc/hosts

キーによるログインは達成

sshpass のインストール

# yum install -y sshpass

キーを生成

# ssh-keygen 

公開キーを分配

# vim sendkey.sh
#!/bin/bash
IP="
k8s-master01
k8s-master02
k8s-master03
k8s-node01
k8s-node02
k8s-node03
db_server
middleware_server
"
for node in ${IP};do
  sshpass -p abc1234 ssh-copy-id -o StrictHostKeyChecking=no ${node}
  echo "${node} 秘钥发送完成"
  scp /etc/hosts ${node}:/etc/hosts
  echo "${node} hosts文件发送完成"
done

実行権限の追加

# chmod+x sendkey.sh

スクリプトを実行...

# ./sendkey.sh

認証キーでのサインインを許可

# ssh k8s-master01

swapを閉じる

追加

# sim close-swap. h
#! bin/bash
IP="
k8s-master02
k8s-master02
k8s-master03
k8s-node02
k8s-node02
k8s-node03
"
for node in ${IP}o
    ssh ${node} "swapoff -a"
    ssh ${node} "cp /etc/fstab /etc/fstab. ackup"
    ssh ${node} "sed -ri 's/.*swap.*/#&/' /etc/fstab"

実行権限の追加

# chmod +x close-swap.sh

スクリプトを実行...

# ./close-swap.sh

閉鎖

# ssh k8s-master01 "free-h"

カーネルパラメータ最適化

設定を追加

# vim k8s.conf
# https://github.com/moby/moby/issues/31208 
# ipvsadm -l --timout
# 修复ipvs模式下长连接timeout问题 小于900即可
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 10
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.netfilter.nf_conntrack_max = 2310720
fs.inotify.max_user_watches=89100
fs.may_detach_mounts = 1
fs.file-max = 52706963
fs.nr_open = 52706963
net.bridge.bridge-nf-call-arptables = 1
vm.swappiness = 0
vm.overcommit_memory=1
vm.panic_on_oom=0
#用于解决k8s内核软锁的bug
kernel.softlockup_panic = 1
kernel.softlockup_all_cpu_backtrace = 1

追加

# vim send_k8sconfig. h
#! bin/bash
IP="
k8s-master02
k8s-master02
k8s-master03
k8s-node02
k8s-node02
k8s-node03
"
for node in ${IP}o
    scp k8s. onf ${node}:/etc/sysctl.d/k8s.conf
    ssh ${node} "sysctl --system"
done

実行権限の追加

# chmod +x send_k8sconfig.sh

スクリプトを実行...

# ./send_k8sconfig.sh

ディスクマウント

折りたたむ

kubeasz のインストール

スキップすることも中...

バージョンカブタ バージョンを設定する

export release=3.6.7

インストールツールをダウンロードする

wget https://githubfast.com/easzlab/kubeasz/releases/download/${release}/ezdown

実行権限の追加

chmod+x ezdown

kubeasz インストーラ

インストールツールをダウンロードする

./ezdown -D

k8クラスターをデプロイする

コンテナー kubeasz

./ezdown - S

k8クラスターを作成

docker exec -it kubeasz ezctl new k8s-batar

hostsファイルの変更

vim /etc/kubeasz/clusters/k8s-batar/hosts
# PS: 改IP就好了(改成域名可能有问题)
# 'etcd' cluster should have odd member(s) (1,3,5,...)
[etcd]
192.168.50.7
192.168.50.19
192.168.50.21

# master node(s), set unique 'k8s_nodename' for each node
# CAUTION: 'k8s_nodename' must consist of lower case alphanumeric characters, '-' or '.',
# and must start and end with an alphanumeric character
[kube_master]
192.168.50.7 k8s_nodename='master-01'
192.168.50.19 k8s_nodename='master-02'
192.168.50.21 k8s_nodename='master-03'

# work node(s), set unique 'k8s_nodename' for each node
# CAUTION: 'k8s_nodename' must consist of lower case alphanumeric characters, '-' or '.',
# and must start and end with an alphanumeric character
[kube_node]
192.168.50.8 k8s_nodename='worker-01'
192.168.50.14 k8s_nodename='worker-02'
192.168.50.17 k8s_nodename='worker-03'

省略...

alias を見る

alias

aliasは "dk"を持っていたかチェックする。

k8をデプロイ

dk ezctl setup k8s-batar all

ノードの情報を表示

kubectl get node

全てのポッドの情報を表示します

kubectl get pods -A