使用Kubeadmクラスタ展開K8S
kubeadmは、ベストプラクティスのため、かつ迅速にするために、クラスタkubernetesを構築するためのツールが「参加kubeadm」は、迅速な環境を学ぶkubernetesを構築するには、このツールを使用することができ、「kubeadm INIT」とのプロバイダです。
このセクションを研究することによって、あなたは成功しkubernetesクラスタ環境の基盤を構築するためにkubeadmツールを使用することができるようになります。
- 環境の準備
- Hostsファイルの準備
- ドッカー環境設定
- その他の準備
- 使用Kubeadmクラスタ展開K8S
- 参考資料
- リマーク
環境の準備
IP | ホスト名 | 役割 | オペレーティングシステム |
---|---|---|---|
192.168.0.104 | CentOSの-1.sharedマスター | 主人 | Centos6.4 |
192.168.0.108 | CentOSの-2.shared node01 | ノード | Centos6.4 |
192.168.0.109 | CentOSの-3.shared node01 | ノード | Centos6.4 |
Hostsファイルの準備
192.168.0.104 centos-1.shared master
192.168.0.108 centos-2.shared node01
192.168.0.109 centos-3.shared node02
ドッカー環境設定
1)システムのデフォルトのファイアウォールとSELinuxをオフにします
setenforce 0
sed -i -r "/^SELINUX=/c SELINUX=disabled" /etc/selinux/config
which systemctl && systemctl stop firewalld
which systemctl && systemctl disable firewalld
which systemctl && systemctl stop iptables || service iptables stop
which systemctl && systemctl disable iptables || chkconfig iptables off
2)古いバージョンをアンインストールドッカー
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker \
docker-ce \
docker-ee
3)インストールDockerCE
# 1.安装所需的包
# yum-utils 提供了 yum-config-manager 实用程
# 并且 devicemapper 存储驱动需要 device-mapper-persistent-data 和 lvm2
yum install -y yum-utils device-mapper-persistent-data lvm2
# 2.更新xfsprogs
yum update xfsprogs
# 3.使用以下命令设置源
#官方源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#阿里源(建议使用)
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4.安装Docker CE
yum install -y docker-ce
# 4.或者安装指定版本
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce-17.12.1.ce-1.el7.centos
4)がオンとドッカーを開始するように設定
systemctl start docker
systemctl enable docker
systemctl status docker
5)よくある質問
WARINING提示:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
#解决方案
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
その他の準備
1)ファイアウォールをオフにします
systemctl stop firewalld.service
systemctl stop iptables.service
systemctl disable firewalld.service
systemctl disable iptables.service
2)無効にSELINUX
#临时关闭:
setenforce 0
#永久关闭:
vim /etc/selinux/config
SELINUX=disabled
3)無効スワップデバイス(パフォーマンスへの影響、K8Sクラスタの初期化エラー)
#临时禁用
swapoff -a
#永久禁用
Vim /etc/fstab
注释 /dev/mapper/VolGroup-lv_swap swap 所在的行
4)、スクリプトファイルに関連/etc/sysconfig/modules/ipvs.modulesを作成するために、IPVSカーネルモジュールロードされたカーネルモジュールを有効にするカーネルモジュールの自動ロードを設定します。次のようにドキュメントが(再構成を使用することもできる)を読み出し
#!/bin/bash
ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
for i in $(ls $ipvs_mods_dir | grep -o "^[^.]*"); do
/sbin/modinfo -F filename $i &> /dev/null
if [ $? -eq 0 ]; then
/sbin/modprobe $i
fi
done
# 赋权、运行并检查
chmod +x /etc/sysconfig/modules/ipvs.modules
/etc/sysconfig/modules/ipvs.modules
lsmod |grep ip_vs
5)ドッカー設定ファイル(ドッカー単位ファイル:/usr/lib/systemd/system/docker.service)
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStartPost=/usr/sbin/iptables -P FPRWARD ACCEPT
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSe=0
RestartSec=2
Restart=always
systemctl daemon-reload
systemctl restart docker
#变量查看
docker info
使用Kubeadmクラスタ展開K8S
1)まず、K8S関連のパッケージをインストールします。
アリ雲画像リポジトリは以下のような構成は以下のとおりです。
cd /etc/yum.repos.d/
vi k8s.repo
[kubernetes]
name=Kubernetes Repository
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
2)倉庫ローディングをチェック
yum repolist
[root@centos-1 yum.repos.d]# yum list all |grep "^kube"
kubeadm.x86_64 1.16.3-0 kubernetes
kubectl.x86_64 1.16.3-0 kubernetes
kubelet.x86_64 1.16.3-0 kubernetes
kubernetes.x86_64 1.5.2-0.7.git269f928.el7 extras
kubernetes-client.x86_64 1.5.2-0.7.git269f928.el7 extras
kubernetes-cni.x86_64 0.7.5-0 kubernetes
kubernetes-master.x86_64 1.5.2-0.7.git269f928.el7 extras
kubernetes-node.x86_64 1.5.2-0.7.git269f928.el7 extras
3)yumをインストールkubeadm、kubectlとkubeletを使用して
yum install kubeadm kubectl kubelet
4)関連のバンドルが無傷であるチェック
[root@centos-1 yum.repos.d]# rpm -ql kubelet
/etc/kubernetes/manifests
/etc/sysconfig/kubelet
/usr/bin/kubelet
/usr/lib/systemd/system/kubelet.service
5)が配置kubelet、スワップが有効になっている場合ではなく、上記近いスワップするように構成されている場合(与えられ、省略することができます)
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARG="--fail-swap-on=false”
6)初期クラスタ(マスターノード)
#集群镜像获取
https://www.jianshu.com/p/8bc61078bded
kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml
kubeadm config images pull
#方式一:命令行(--dry-run:试运行,不会有改动)
kubeadm init --kubernetes-version=v1.16.0 --pod-network-cidr="10.244.0.0/16" --dry-run
#方式二:Yml配置文件,使用—config string
#集群初始化完毕后,创建用户(最好用普通账号创建):
mkdir -p $HOME/.kube
#切换至Root用户操作:
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config(主配置文件,至关重要,不能泄露)
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#集成flannel插件,并观察
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#Pod情况查看:
kubectl get pods -n kube-system
#集群初始化完毕
kubectl get nodes
7)ノードノード
- 対応するノードレポノードにマスターノードからコピー設定:
scp k8s.repo node01:/etc/yum.repos.d/ scp /etc/sysconfig/kubelet node01:/etc/sysconfig scp k8s.repo node02:/etc/yum.repos.d/ scp /etc/sysconfig/kubelet node02:/etc/sysconfig scp /run/flannel/subnet.env node01: /run/flannel/subnet.env scp /run/flannel/subnet.env node02: /run/flannel/subnet.env
8)マスターノードのノードでノードとSCPに、ノードのそれぞれに所望の画像を充填
docker save -o k8s-node.tar k8s.gcr.io/coredns quay.io/coreos/flannel k8s.gcr.io/pause
scp k8s-node.tar node01:/
scp k8s-node.tar node02:/
9)ノードノード。
- 画像(coredns、フランネル、ポーズ)をロード:
cd / && docker load —input k8s-node.tar yum install kubelet kubeadm
- クラスタを追加します。このトークンが使用される場合、追加されたノードのノードノードのクラスタを初期化する第6のステップであることに留意されたいです。
kubeadm join 192.168.0.104:6443 --token z9kmma.p8ak2ffytr7gjnsv \ --discovery-token-ca-cert-hash sha256:82ee3a673e99fa8f46a8f515fa430819b595d532f3fcb21d9c3114f3394b4b0d
10)が配備され、クラスタ(マスター)の状態を確認し、ケースベースのクラスタkubernetesが完了構築されています。
kubectl get nodes
NAME STATUS ROLES AGE VERSION
centos-1.shared Ready master 41m v1.16.3
centos-2.shared Ready <none> 19m v1.16.3
centos-3.shared Ready <none> 18m v1.16.3
参考資料
公式文書:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
リマーク
この記事のサイトは、私の中に位置していますGithubに、私はあなたに有益な場合、プロセスの大規模およびネイティブクラウド技術の知識と実践的な操作で共有するように設計、すべてのトピックは、ドッキングウィンドウ、K8S、CEPH、istioとプロメテウス含め、来る更新していきます〜続く、私のgithubのスター、これは私の更新電力共有、外出先で、あなたに感謝して下さい