天天看點

kubeadm方式搭建kubernetes

本次搭建使用到了三個節點 是以需要準備三台主機

三台主機的規劃 ip以及對應主機名

111.11.1.5 111-11-1-5 master

111.11.1.6 111-11-1-6 node

111.11.1.7 111-11-1-7 node

用于自己的環境練習使用 一個node節點也可以

記憶體 3G CPU 2核 磁盤 100

系統初始化操作

關閉防火牆

systemctl stop firewalld

systemctl disable firewalld

關閉iptables

systemctl stop iptables

systemctl disable iptables

關閉selinux

setenforce 0

sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/sysconfig/selinux

關閉swap

swapoff -a

編輯分區配置檔案 /etc/fstab檔案,注釋掉swap分區一行

設定主機名 修改網卡名稱(可按照自己習慣修改 這是一個我修改主機名的腳本)

ss=$(ifconfig ens32 | grep "inet " | awk -F " " '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲') dd=(echo $ss | awk -F “.” ‘{print $1,$2,$3,$4}’)

arr=()

for i in d d ; d o a r r [ dd; do arr[ dd;doarr[{#arr[*]}]=${i}

done;

hostnamectl set-hostname “ a r r [ 0 ] − {arr[0]}- arr[0]−{arr[1]}- a r r [ 2 ] − {arr[2]}- arr[2]−{arr[3]}”

bash

在規劃的master中添加hosts

cat >> /etc/hosts << EOF

111.11.1.5 111-11-1-5

111.11.1.6 111-11-1-6

111.11.1.7 111-11-1-7

EOF

添加網橋過濾和位址轉發功能

cat >> /etc/sysctl.d/kubernetes.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

生效

sysctl --system

加載網橋過濾子產品

modprobe br_netfilter

lsmod | grep br_netfilter

配置ipvs功能

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum -y install ipset ipvsadm

cat < /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_ipv4

EOF

chmod +x /etc/sysconfig/modules/ipvs.modules

/bin/bash /etc/sysconfig/modules/ipvs.modules

檢視是否加載成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

時間同步

yum -y install ntpdate

ntpdate -u cn.pool.ntp.org

重新開機

reboot

系統初始化完成

開始安裝docker

檢視鏡像源都有哪些docker版本

yum list docker-ce --showduplicate

指定版本安裝 (不指定client版本會跟server端版本不一樣 之後安裝kubernetes會報錯)

yum -y install docker-ce-19.03.14 docker-ce-cli-19.03.14 containerd.io

給docker添加一個網絡鏡像源

mkdir /etc/docker

cat < /etc/docker/daemon.json

{

“exec-opts”: [“native.cgroupdriver=systemd”],

“registry-mirrors”: [“https://kn0t2bca.mirror.aliyuncs.com”]

}

EOF

重新開機 開機自啟 重新加載docker 檢視版本

systemctl restart docker

systemctl enable docker

systemctl daemon-reload

docker version

kubeadm方式搭建kubernetes

安裝k8s

添加k8s鏡像源

cat > /etc/yum.repos.d/kubernetes.repo << EOF

[kubernetes]

name=kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

安裝kubeadm、kubelet、kubectl 指定版本

yum -y install --setopt=obsoletes=0 kubeadm-1.19.10 kubelet-1.19.10 kubectl-1.19.10

修改kubelet配置

vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="–cgroup-driver=systemd"

KUBE_PROXY_MODE=“ipvs”

開機自啟

systemctl enable kubelet

部署kubernetes master(此處需要注意 ip的網段需要不一樣 不然之後coredns會有問題)

kubeadm init

–apiserver-advertise-address=111.11.1.5

–image-repository registry.aliyuncs.com/google_containers

–kubernetes-version=v1.19.10

–pod-network-cidr=11.222.0.0/16

–service-cidr=22.22.0.0/12

kubeadm方式搭建kubernetes

會有很長拉取時間 可以再打開一個shell 檢視拉取的鏡像

kubeadm方式搭建kubernetes

如圖 出現successfully 成功

kubeadm方式搭建kubernetes

按照提示往下走

kubeadm方式搭建kubernetes

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown ( i d − u ) : (id -u): (id−u):(id -g) $HOME/.kube/config

kubeadm方式搭建kubernetes

為叢集添加節點 在節點上複制執行

kubeadm方式搭建kubernetes
kubeadm方式搭建kubernetes

此時在master上執行 檢視節點

kubectl get nodes

kubeadm方式搭建kubernetes

預設token有效期24h 過期之後 重新建立token指令

kubeam token create --print-join-command

此時可以發現節點狀态是NotReady的

執行指令 部署網絡插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果一直等待 可以先wget下載下傳下來 再建立

kubeadm方式搭建kubernetes

建立會有等待時間 再次檢視 節點已經ready

kubeadm方式搭建kubernetes

建立一個 nginx服務

kubeadm方式搭建kubernetes

端口暴露

kubectl expose deployment nginx --port=80 --type=NodePort

kubeadm方式搭建kubernetes

在浏覽器通路 任意節點ip加端口

kubeadm方式搭建kubernetes

此時通過kubeadm部署一個kubernetes叢集完成了