Kubernetes(k8s)1.14 離線版集羣 - 搭建環境配置

聲明:
如果您有更好的技術與作者分享,或者商業合作;
請訪問作者個人網站 http://www.esqabc.com/view/message.html 留言給作者。
如果該案例觸犯您的專利,請在這裏:http://www.esqabc.com/view/message.html 留言給作者說明原由
作者一經查實,馬上刪除。

1、集羣服務器,使用相同地區,內網相同的ECS

3個master:

內網IP 名稱
172.26.16.249 k8s-01
172.26.16.250 k8s-02
172.26.16.251 k8s-03

1個node:

內網IP 名稱
172.26.16.252 k8s-04

1個後面添加的node(即新加入集羣的節點)

內網IP 名稱
172.26.16.253 k8s-05

注意:後面一個node節點服務器可要可不要,當前搭建集羣不需要用到,後面步驟只是演戲怎麼加入當前集羣
如果沒有特別說明,一般都在(k8s-01)服務器執行

2 、設置服務器名稱與IP解析

1、更改服務器名稱:

[root@k8s-01~]# hostnamectl set-hostname k8s-01 && bash
[root@k8s-02~]# hostnamectl set-hostname k8s-02 && bash
[root@k8s-03~]# hostnamectl set-hostname k8s-03 && bash
[root@k8s-04~]# hostnamectl set-hostname k8s-04 && bash
.
注意:這個操作在單個服務器執行

.b、編輯 /etc/hosts 文件,添加IP解析

[root@test~]# cat >> /etc/hosts <<EOF
.
添加下面內容

172.26.16.249  k8s-01
172.26.16.250  k8s-02
172.26.16.251  k8s-03
172.26.16.252  k8s-04
EOF

注意:這個操作在所有服務器都執行一次

3 、設置(k8s-01)無密碼 ssh 登錄其它節點

a、生成簽名:

[root@k8s-01 ~]# ssh-keygen -t rsa -P “” -f /root/.ssh/id_rsa
或者
[root@k8s-01 ~]# ssh-keygen -t rsa
在這裏插入圖片描述

b、分發到各個服務器

方式1:

[root@k8s-01~]# ssh-copy-id root@k8s-01

[root@k8s-01~]# ssh-copy-id root@k8s-02

[root@k8s-01~]# ssh-copy-id root@k8s-03

[root@k8s-01~]# ssh-copy-id root@k8s-04

方式2:

[root@k8s-01~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.26.16.249
.
[root@k8s-01~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.26.16.250
.
[root@k8s-01~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.26.16.251
.
[root@k8s-01~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.26.16.252
.

4、設置集羣腳本文件(environment.sh)

a、創建集羣需要用到的目錄,所有服務器都執行一次

[root@test ~]# mkdir -p /opt/k8s/{bin,work} /etc/{kubernetes,etcd}/cert

b、創建(environment.sh)並添加下面內容

[root@k8s-01~]# cd /opt/k8s/bin
.
[root@bin ~]# touch environment.sh
.
[root@bin ~]# vi environment.sh

#!/usr/bin/bash

# 生成 EncryptionConfig 所需的加密 key
export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
# 集羣各機器 IP 數組
export NODE_IPS=( 172.26.16.249 172.26.16.250 172.26.16.251 172.26.16.252 )
# 集羣各 IP 對應的主機名數組
export NODE_NAMES=(k8s-01 k8s-02 k8s-03 k8s-04)
# 集羣MASTER機器 IP 數組
export MASTER_IPS=(172.26.16.249 172.26.16.250 172.26.16.251 )
# 集羣所有的master Ip對應的主機
export MASTER_NAMES=(k8s-01 k8s-02 k8s-03)
# etcd 集羣服務地址列表
export ETCD_ENDPOINTS="https://172.26.16.249:2379,https://172.26.16.250:2379,https://172.26.16.251:2379"
# etcd 集羣間通信的 IP 和端口
export ETCD_NODES="k8s-01=https://172.26.16.249:2380,k8s-02=https://172.26.16.250:2380,k8s-03=https://172.26.16.251:2380"
# etcd 集羣所有node ip
export ETCD_IPS=(172.26.16.249 172.26.16.250 172.26.16.251 172.26.16.252 )
# kube-apiserver 的反向代理(kube-nginx)地址端口
export KUBE_APISERVER="https://172.26.16.252:8443"
# 節點間互聯網絡接口名稱
export IFACE="eth0"
# etcd 數據目錄
export ETCD_DATA_DIR="/data/k8s/etcd/data"
# etcd WAL 目錄,建議是 SSD 磁盤分區,或者和 ETCD_DATA_DIR 不同的磁盤分區
export ETCD_WAL_DIR="/data/k8s/etcd/wal"
# k8s 各組件數據目錄
export K8S_DIR="/data/k8s/k8s"
# docker 數據目錄
#export DOCKER_DIR="/data/k8s/docker"

## 以下參數不需要修改
# TLS Bootstrapping 使用的 Token,可以使用命令 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成
#BOOTSTRAP_TOKEN="41f7e4ba8b7be874fcff18bf5cf41a7c"
# 最好使用 當前未用的網段 來定義服務網段和 Pod 網段
# 服務網段,部署前路由不可達,部署後集羣內路由可達(kube-proxy 保證)
SERVICE_CIDR="10.254.0.0/16"
# Pod 網段,建議 /16 段地址,部署前路由不可達,部署後集羣內路由可達(flanneld 保證)
CLUSTER_CIDR="172.30.0.0/16"
# 服務端口範圍 (NodePort Range)
export NODE_PORT_RANGE="1024-32767"
# flanneld 網絡配置前綴
export FLANNEL_ETCD_PREFIX="/kubernetes/network"
# kubernetes 服務 IP (一般是 SERVICE_CIDR 中第一個IP)
export CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"
# 集羣 DNS 服務 IP (SERVICE_CIDR 中預分配)
export CLUSTER_DNS_SVC_IP="10.254.0.2"
# 集羣 DNS 域名(末尾不帶點號)
export CLUSTER_DNS_DOMAIN="cluster.local"
# 將二進制目錄 /opt/k8s/bin 加到 PATHexport PATH=/opt/k8s/bin:$PATH

c、分發到其他服務器

cd /opt/k8s/bin && source environment.sh
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    scp environment.sh root@${node_ip}:/opt/k8s/bin/
    ssh root@${node_ip} "chmod +x /opt/k8s/bin/* "
done

5、初始化系統環境

a、更新系統所有軟件,所有服務器都執行一次

[root@test ~]# yum -y update

b、安裝需要用到的工具或者軟件,所有服務器都執行一次

[root@test ~]# yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget

c、確保時間統一

cd /opt/k8s/bin && source environment.sh
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ntpdate -u ntp.api.bz
	systemctl restart rsyslog && systemctl restart crond
done

d、設置國內的源,所有服務器都執行一次

[root@test ~]# mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
.
[root@test~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
.
[root@test~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
.
[root@test~]# yum clean all && yum makecache

e、關閉firewalld

cd /opt/k8s/bin && source environment.sh
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    systemctl stop firewalld && systemctl disable firewalld
done

f、關閉swapoff

cd /opt/k8s/bin && source environment.sh
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
done

g、設置iptables

cd /opt/k8s/bin && source environment.sh
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
	iptables -P FORWARD ACCEPT
done

h、添加到 PATH 變量,所有服務器都執行一次

[root@test ~]# echo ‘PATH=/opt/k8s/bin:$PATH’ >>/etc/profile
[root@test ~]# source /etc/profile

i、設置setenforce

cd /opt/k8s/bin && source environment.sh
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
	setenforce 0
	sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
done

j、配置國內Kubernetes源,所有服務器都執行一次

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

添加下面內容:

[kubernetes]

name=Kubernetes

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

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

k、設置k8s內核參數,所有服務器都執行一次

[root@test ~]# cd /opt/k8s/bin
[root@test ~]# cat > /etc/sysctl.d/kubernetes.conf << EOF
添加下面內容:

net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
net.ipv4.ip_local_port_range = 10000 65000
fs.file-max = 2000000
vm.swappiness =0

EOF

[root@test ~]# sysctl -p /etc/sysctl.d/kubernetes.conf

l、升級內核,所有服務器都執行一次

[root@test ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
[root@test ~]# yum --enablerepo=elrepo-kernel install -y kernel-lt
[root@test ~]# grep ‘initrd16’ /boot/grub2/grub.cfg

在這裏插入圖片描述
設置開機從新內核啓動
[root@test ~]# grub2-set-default 0
重啓機器
[root@test ~]# reboot
查看是否升級
[root@test ~]# uname -r
在這裏插入圖片描述

6、需要準備的安裝包或者工具

1、kubernetes二進制安裝文件
2、nginx
3、flanneld
4、etcd
5、kubectl
6、CoreDNS安裝包
7、coredns.yaml
》》》》》》》》》》》》》》》》》》》》》》》》》》
》》》》》》》》》》》》》》》》》》》》》》》》》》
Kubernetes(k8s)1.14.2搭建需要的工具或軟件

百度雲盤鏈接:https://pan.baidu.com/s/1t7vU_vimYJHeGCJqmVBdxQ
提取碼:v4ko

》》》》》》》》》》》》》》》》》》》》》》》》》》
》》》》》》》》》》》》》》》》》》》》》》》》》》
i4t.com網站的地址:
1、kubernetes二進制安裝文件:http://down.i4t.com/k8s1.14/kubernetes-server-linux-amd64.tar.gz
2、nginx:http://down.i4t.com/k8s1.14/nginx-1.15.3.tar.gz
3、flanneld:http://down.i4t.com/k8s1.14/flannel-v0.11.0-linux-amd64.tar.gz
4、etcd:https://github.com/etcd-io/etcd/releases/tag/v3.3.17
5、kubectl:http://down.i4t.com/k8s1.14/kubernetes-client-linux-amd64.tar.gz
6、CoreDNS安裝包:http://down.i4t.com/coredns_v1.4.tar
7、coredns.yaml:http://down.i4t.com/k8s1.14/coredns.yaml

》》》》》》》》》》》》》》》》》》》》》》》》》》
》》》》》》》》》》》》》》》》》》》》》》》》》》
官方的地址:

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md#downloads-for-v1142

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章