声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。 如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由 作者一经查实,马上删除。
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)服务器执行
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
注意:这个操作在所有服务器都执行一次
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 .
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 加到 PATH 中
export 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
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
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