一、环境信息:

操作系统:ubuntu 18.04 server amd64

docker:docker 19.03.ce

kubernetes:v1.19

IP地址 主机名   角色
172.29.9.1 k8s-master k8s-master.ilinux.io k8s-api.ilinux.io master
172.29.9.11 k8s-node1.ilinux.io k8s-node1 node1
172.29.9.12 k8s-node2.ilinux.io k8s-node2 node2
172.29.9.13 k8s-node3.ilinux.io k8s-node3 node3

操作系统安装无需配置swap分区

二、操作系统基本设定

root@k8s-node1:~# timedatectl set-timezone "Asia/Shanghai"  #设置时区为上海

root@k8s-master:~# ufw disable && ufw status  #关闭防火墙并查看状态

root@k8s-master:~# swapoff -a   #关闭swap分区,永久关闭需要在fstab文件中注释swap开头的行

修改hosts文件:

  172.29.9.1 k8s-master.ilinux.io k8s-master k8s-api.ilinux.io
  172.29.9.11 k8s-node1.ilinux.io k8s-node1
  172.29.9.12 k8s-node2.ilinux.io k8s-node2
  172.29.9.13 k8s-node3.ilinux.io k8s-node3

三、配置并启动容器

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=5:19.03.0~3-0~ubuntu-bionic

root@k8s-master:~# docker version  #查看安装的docker-ce版本

root@k8s-master:~# vim /etc/docker/daemon.json  #配置docker国内加速

  }

    "registry-mirrors": ["https://registry.docker-cn.com"]

  }

root@k8s-master:~# systemctl daemon-reload  #重新加载daemon

root@k8s-master:~# systemctl start docker.service  #启动docker服务

root@k8s-master:~# systemctl enable docker  #加入开机启动

三、kubernetes 基本组件安装

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
root@k8s-master:~# apt install kubelet=1.19.0-00  安装kubelet,指定版本为1.19.0

root@k8s-master:~# apt install kubeadm=1.19.0-00  安装kubeadm,指定版本为1.19.0

root@k8s-master:~# apt install kubectl=1.19.0-00  安装kubectl,指定版本为1.19.0

以上操作全部需要在所有节点执行

四、kubeadm初始化

root@k8s-master:~# kubeadm init \
 --image-repository registry.aliyuncs.com/google_containers \
 --kubernetes-version v1.19.0 \
 --control-plane-endpoint k8s-api.ilinux.io \
 --apiserver-advertise-address 172.29.9.1 \
 --pod-network-cidr 10.244.0.0/16 \
 --token-ttl 0

出现如上提示表示初始化成功

参数说明:

  --image-repository:指定使用的镜像仓库,默认为gcr.io。

  --kubernetes-version:Kubernetes程序组件版本号,必须与安装的kubelet版本号相同。

  --control-plane-endpoint:控制平台固定访问端点,可以是IP或DNS名称,作为集群管理员与集群组件的kubeconfig配置文件的API server的访问地址。单控制平台部署时可不使用该选项。

  --pod-network-cidr:pod网络的地址范围,其值为CIDR,通常Flannel网络插件的默认值为10.244.0.0/16,ProjectCalico插件的默认值为192.168.0.0/16。

  --service-cidr:Service的网络地址范围,其值为CIDR格式的网络地址,默认为10.96.0.0/12。通常,仅Flannel一类的网络插件需要手动指定该地址。

  --apiserver-advertise-address:API Server通告给其他组件的IP地址,一般为Master节点用于集群内通信的IP地址,0.0.0.0表示节点上所有可用地址。

  --token-ttl:共享令牌的过期时长,默认为24小时,0表示永不过期,基于安全考虑需要将过期时间设置一具特定值。

五、配置命令行并加入node节点

1、配置命令行工具kubectl

root@k8s-master:~# mkdir -p $HOME/ .kube
root@k8s-master:~# cp -i /etc/kubernetes/admin.conf /root/.kube/config
root@k8s-master:~# chown root:root /root/.kube/config

root@k8s-master:~# kubectl get nodes  #获取节点相关状态信息

2、部署Flannel网络插件

root@k8s-master:~# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

等候几秒后再次使用kubelet get nodes命令查看,发现STATUS状态已经变为Ready了。

3、添加工作节点

root@k8s-node1:~#kubeadm join k8s-api.ilinux.io:6443 --token i4zjhe.ghw1val8gc9ik688 \
    --discovery-token-ca-cert-hash sha256:d67f112d9198dfe3a8dc8de9cafcb205b09a5a4bad660f8ffbac01a1883a7405

#该命令在初始化完成后的提示最后一条命令复制即可

4、root@k8s-master:~# kubectl get nodes  #再次使用命令查看发现node1已经加入节点

5、关于token

  默认token 24小时过期,后期可使用kubeadm token list查看还未过期的token。或使用kubeadm token create创建一个新的token

kubernetes笔记-1-基础环境部署的更多相关文章

  1. ELK-6.5.3学习笔记–elk基础环境安装

    本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...

  2. OpenStack实践系列①openstack简介及基础环境部署

    OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...

  3. openstack(pike 版)集群部署(一)----基础环境部署

    一.环境 1.系统: a.CentOS Linux release 7.4.1708 (Core) b.更新yum源和安装常用软件 #  yum -y install  epel-release ba ...

  4. mongodb基础环境部署(windows系统下)

    Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNorma ...

  5. Jenkins+maven+gitlab自动化部署之基础环境部署(一)

    从一个二线城市,来到上海,刚入职,老大就给任务,为了减少开发打包部署时间,需要搭建一套自动化部署环境.接到任务后,赶紧上网查找资料,以及了解jenkins作用等等,用了一周时间,了解了个大概,由于都是 ...

  6. 虚拟机console基础环境部署——工作目录准备

    1. 概述2. 相关约定2.1 删除旧文件2.2 创建全局共享文件目录2.3 创建全局软件安装目录2.4 创建数据放置目录3. 总结 1. 概述 上述博客中,已经为console最小化安装了操作系统. ...

  7. Maven 学习笔记(一) 基础环境搭建

    在Java的世界里,项目的管理与构建,有两大常用工具,一个是Maven,另一个是Gradle,当然,还有一个正在淡出的Ant.Maven 和 Gradle 都是非常出色的工具,排除个人喜好,用哪个工具 ...

  8. InfluxDB+Grafana大数据监控系列之基础环境部署(一)

    一.单节点环境部署 机器节点信息及 InfluxDB.Grafana 版本选择: 节点 Linux版本 部署服务 10.223.1.198 Centos 6.8 InfluxDB 1.7.7 10.2 ...

  9. 虚拟机console基础环境部署——系统基础环境

    1. 概述2. 工具类安装2.1 安装vim2.2 安装tree2.3 安装expect2.4 安装lsof3. 编译环境类安装 1. 概述 本系列博客是在最小化安装CentOS6.5的基础上,通过配 ...

  10. OpenShift-OKD3.10基础环境部署

    单master + 双node 1.主机角色划分 #采用双网段部署 0 网段是opesnshift内部通信IP,1 网段是连接外网通信地址 #master master.example.com 192 ...

随机推荐

  1. KingbaseES 创建只读(read_only)用户

    数据库版本: prod=> select version(); version --------------------------------------------------------- ...

  2. 函数索引引用的函数必须是immutable类型

    用户在使用中,可能会用到基于函数的索引,但是函数是非 immutable 类型的,导致函数索引无法创建.如: test=# create index ind_t1 on t1(to_char(crea ...

  3. 读时加写锁,写时加读锁,Eureka可真的会玩

    大家好,我是三友~~ 在对于读写锁的认识当中,我们都认为读时加读锁,写时加写锁来保证读写和写写互斥,从而达到读写安全的目的.但是就在我翻Eureka源码的时候,发现Eureka在使用读写锁时竟然是在读 ...

  4. .NET 反向代理-YARP 根据域名转发

    前段时间发布过一个关于 YARP 的简单介绍,感兴趣的小伙伴恭请移步看看 .NET 反向代理-YARP - 一事冇诚 - 博客园 (cnblogs.com) 作为反向代理,必不可少的当然是根据域名代理 ...

  5. 使用 EFKLK 搭建 Kubernetes 日志收集工具栈

    转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247491992&idx=1&sn=a770252759 ...

  6. ProxySQL(4):多层配置系统

    文章转载自:https://www.cnblogs.com/f-ck-need-u/p/9280793.html ProxySQL中的库 使用ProxySQL的Admin管理接口连上ProxySQL, ...

  7. 原生js的懒人轮播图

    <style> body{ margin: 0; padding: 0px;}#carousel{ margin: auto; /* 居中 */ width: 600px; /* 设置宽度 ...

  8. Java后端开发——美团(牛客)

    Java后端开发--美团(牛客) Java的基本数据类型,各自的字节数 ​ 老生常谈,不多说了. 类型 字节数 byte 1字节 short 2字节 int 4字节 long 8字节 float 4字 ...

  9. P1600 [NOIP2016 提高组] 天天爱跑步 (树上差分)

    对于一条路径,s-t,位于该路径上的观察员能观察到运动员当且仅当以下两种情况成立:(d[ ]表示节点深度) 1.观察员x在s-lca(s,t)上时,满足d[s]=d[x]+w[x]就能观察到,所以我们 ...

  10. 洛谷P1120 小木棍 (搜索+剪枝)

    搜索的经典题. 我们要求木根的最小长度,就要是木根的数量尽可能多,可以发现木根的长度一定可以整除所有小木棒的总长度,从小到大枚举这个可能的长度,第一次有解的就是答案. 关心的状态:当前正在拼哪根木棍, ...