K8S-Demo集群实践02:准备VMware虚拟机3台Master+3台Node

一、克隆虚拟机

  • 需要关闭虚拟机模板,shutdown -h now
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二、设置虚拟机的IP和主机名

  • 主机名配置文件 /etc/hostname,每台主机不一样
  • IP配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33,IP设置为192.168.66.10~15
  • 主机名解析 /etc/hosts
  • node节点的名字中不能有.(点),一开始配置为node1.demo,结果在后面遇到错误:

bootstrapTokens.0.groups: Invalid value: []string{“system:bootstrappers:”}: bootstrap group “system:bootstrappers:” is invalid (must match \Asystem:bootstrappers:[a-z0-9:-]{0,255}[a-z0-9]\z)

  • /etc/hosts 内容如下
192.168.66.10    master1
192.168.66.11    master2
192.168.66.12    master3
192.168.66.13    node1
192.168.66.14    node2
192.168.66.15    node3
192.168.66.106   harbor.demo     # 容器镜像仓库域名

三、设置免密登录

  • 这个仅在master1上设置
  • 从master1 到其它节点免密登录,其它节点之间登录或者其它节点登录master1还是需要密码
  • master1登录自己也要设置免密登录,为了后面执行脚本方便
[root@master1 ~]# ssh-keygen -t rsa
[root@master1 ~]# ssh-copy-id root@master1
[root@master1 ~]# ssh-copy-id root@master2
[root@master1 ~]# ssh-copy-id root@master3
[root@master1 ~]# ssh-copy-id root@node1
[root@master1 ~]# ssh-copy-id root@node2
[root@master1 ~]# ssh-copy-id root@node3

四、环境变量设置

  • 目录说明
    • 安装脚本和下载软件包存放目录 /opt/install
    • 运行 /opt/k8s
    • 配置文件存放目录 /opt/k8s/etc
  • 网络说明
    • 宿主机网络(虚拟机网路)192.168.66.0/24
    • Pod网络 172.8.0.0/16
    • 服务网络 10.8.0.0/16
  • 环境变量设置脚本: /opt/k8s/etc/setenv.sh
#!/usr/bin/bash

# 集群各机器IP数组
export MASTER_IPS=(192.168.66.10 192.168.66.11 192.168.66.12)
export NODE_IPS=(192.168.66.13 192.168.66.14 192.168.66.15)
export ALL_IPS=(${MASTER_IPS[@]} ${NODE_IPS[*]})

# 集群各IP对应的主机名数组
export MASTER_NAMES=(master1 master2 master3)
export NODE_NAMES=(node1 node2 node3)
export ALL_NAMES=(${MASTER_NAMES[@]} ${NODE_NAMES[*]})

# ETCD集群服务地址列表
export ETCD_ENDPOINTS="https://192.168.66.10:2379,https://192.168.66.11:2379,https://192.168.66.12:2379"

# ETCD集群间通信的IP和端口
export ETCD_NODES="master1=https://192.168.66.10:2380,master2=https://192.168.66.11:2380,master3=https://192.168.66.12:2380"

# kube-apiserver的反向代理地址端口,kube-nginx实现
export KUBE_APISERVER="https://127.0.0.1:8443"

# 节点间互联网络接口名称
export IFACE="ens33"

# ETCD数据目录
export ETCD_DATA_DIR="/opt/k8s/etcd/data"

# ETCD WAL目录,建议是SSD磁盘分区,或者和ETCD_DATA_DIR不同的磁盘分区
export ETCD_WAL_DIR="/opt/k8s/etcd/wal"

# K8S各组件数据目录
export K8S_DIR="/opt/k8s"

# 最好使用当前未用的网段来定义服务网段和Pod网段
# 服务网段,部署前路由不可达,部署后集群内路由可达
export SERVICE_CIDR="10.8.0.0/16"

# Pod网段,建议/16段地址,部署前路由不可达,部署后集群内路由可达
export CLUSTER_CIDR="172.8.0.0/16"

# 服务端口范围
export NODE_PORT_RANGE="30000-32767"

# kubernetes服务IP(一般是SERVICE_CIDR中第一个IP)
export CLUSTER_KUBERNETES_SVC_IP="10.8.0.1"

# 集群DNS服务IP(从SERVICE_CIDR中预分配)
export CLUSTER_DNS_SVC_IP="10.8.0.2"

# 集群DNS域名(末尾不带点号)
export CLUSTER_DNS_DOMAIN="cluster.demo"

# 将二进制目录/opt/k8s/bin加到PATH中
export PATH=/opt/k8s/bin:$PATH
export PATH=/opt/k8s/kube-nginx/sbin:$PATH
  • k8s-demo使用节点本地 nginx 4层透明代理实现kube-apiserver高可用

  • 如果不考虑kube-apiserver高可用,只在master1节点上操作,则KUBE_APISERVER环境变量改为https://192.168.66.10:6443

  • 把 setenv.sh 放到 ~/.bashrc 文件中,如下所示

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# add by Jason@vip.qq.com 20201225
source /opt/k8s/etc/setenv.sh

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

附:K8s-Demo集群版本信息

组件版本命令
kubernetes1.18.5kubectl version
docker-ce19.03.11docker version 或者 rpm -qa | grep docker
etcd3.4.3etcdctl version
calico3.13.3calico -v
coredns1.7.0coredns -version

附:专栏链接

K8S-Demo集群实践00:搭建镜像仓库Harbor+安全扫描
K8S-Demo集群实践01:准备VMware虚拟机模板
K8S-Demo集群实践02:准备VMware虚拟机3台Master+3台Node
K8S-Demo集群实践03:准备集群各组件间HTTPS通讯需要的x509证书
K8S-Demo集群实践04:部署etcd三节点高可用集群
K8S-Demo集群实践05:安装kubectl并配置集群管理员账户
K8S-Demo集群实践06:部署kube-apiserver到master节点(3个无状态实例)
K8S-Demo集群实践07:kube-apiserver高可用方案
K8S-Demo集群实践08:部署高可用kube-controller-manager集群
K8S-Demo集群实践09:部署高可用kube-scheduler集群
K8S-Demo集群实践10:部署ipvs模式的kube-proxy组件
K8S-Demo集群实践11:部署ipvs模式的kube-kubelet组件
K8S-Demo集群实践12:部署Calico网络
K8S-Demo集群实践13:部署集群CoreDNS
K8S-Demo集群实践14:部署集群监控服务Metrics Server
K8S-Demo集群实践15:部署Kubernetes Dashboard
K8S-Demo集群实践16:部署Kube-Prometheus
K8S-Demo集群实践17:部署私有云盘owncloud(10.6版本)
K8S-Demo集群实践18:构建宇宙中第一个基础容器镜像


  • 先用起来,通过操作实践认识k8s,积累多了自然就理解了
  • 把理解的知识分享出来,自造福田,自得福缘
  • 追求简单,容易使人理解
  • 知识的上下文也是知识的一部分,例如版本,时间等
  • Jason@vip.qq.com 2021-1-17。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值