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 < .
添加下面内容

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
Kubernetes(k8s)1.14 离线版集群 - 搭建环境配置_第1张图片

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

Kubernetes(k8s)1.14 离线版集群 - 搭建环境配置_第2张图片
设置开机从新内核启动
[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

你可能感兴趣的:(运维技术)