前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes(k8s)1.14 离线版集群 - 搭建环境配置

Kubernetes(k8s)1.14 离线版集群 - 搭建环境配置

作者头像
Mr.Vv
发布2020-06-11 16:22:33
4680
发布2020-06-11 16:22:33
举报

声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 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 . 添加下面内容

代码语言:javascript
复制
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

代码语言:javascript
复制
#!/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、分发到其他服务器

代码语言:javascript
复制
cd /opt/k8s/bin && source environment.sh
代码语言:javascript
复制
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、确保时间统一

代码语言:javascript
复制
cd /opt/k8s/bin && source environment.sh
代码语言:javascript
复制
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

代码语言:javascript
复制
cd /opt/k8s/bin && source environment.sh
代码语言:javascript
复制
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    systemctl stop firewalld && systemctl disable firewalld
done

f、关闭swapoff

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

g、设置iptables

代码语言:javascript
复制
cd /opt/k8s/bin && source environment.sh
代码语言:javascript
复制
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

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

j、配置国内Kubernetes源,所有服务器都执行一次

代码语言:javascript
复制
cat <<EOF > /etc/yum.repos.d/kubernetes.repo

添加下面内容:

代码语言:javascript
复制
[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 添加下面内容:

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、集群服务器,使用相同地区,内网相同的ECS
  • 2 、设置服务器名称与IP解析
  • 3 、设置(k8s-01)无密码 ssh 登录其它节点
  • 4、设置集群脚本文件(environment.sh)
  • 5、初始化系统环境
  • 6、需要准备的安装包或者工具
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档