k8s诞生于2014年,google出品,如今已经是0202年了,站在岸上学不会游泳,还不搭建个k8s集群来玩玩吗?

机器准备

  • 三台位于国外的服务器
(1)k8s的相关组件官方镜像在国外,国外的服务器能防止下载的时候被block。国内的服务器可以考虑国内的
镜像,网上有相关教程。
(2)一台作为集群的master,另外两台作为node。
(3)用作master的机器cpu核数>=2核,这是k8s对硬件上的硬性规定。
(4)服务器的操作系统这里使用的是ubuntu 16.04 x64版本,其它系统未实验过。

软件版本

  • ubuntu 16.04 x64
  • docker 18.09.7
  • k8s 1.17.3
(1)docker和k8s组件的版本都是安装时默认安装的版本。

前期工作

  • 关闭swap内存
非必选操作。关闭swap是k8s出于性能上的考虑。

(1)修改下面文件
vi /etc/fstab
(2)使用#号注释掉文件内容第二行,注释后如下
UUID=e2048966-750b-4795-a9a2-7b477d6681bf /   ext4    errors=remount-ro 0    1
# /dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
(3)reboot命令重启服务器
(4)top命令查看是否生效

  • 修改主机名字
非必选操作。给主机起个利于分辨的名字,后面使用起来方便。

(1)将master机器的host修改为k8s-master,node的机器host名字修改为k8s-node1和k8s-node2。
hostnamectl set-hostname host-name
(2)执行下面指令使生效
/bin/bash

正式搭建k8s集群

  • 安装docker(master,node上操作)
(1)执行下面命令
apt-get update && apt-get install docker.io
(2)安装完成后,可以通过下面命令查看docker信息
docker info

  • 安装k8s的三个必备组件(master,node上操作)
(1)分别执行下面命令
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
(2)分别通过执行kubelet kubeadm kubectl可以验证是否安装成功

  • 修改kubelet或者docker使用的cgroup驱动(master,node上操作)
docker默认使用的是cgroup驱动是cgroupfs,而k8s使用的systemd。虽然k8s推荐使用的是systemd,但是貌似网上说有坑,所以这里我选择修改k8s为cgroupfs驱动。
(1)修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf的文件
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf(2)在文件中添加增加--cgroup-driver=cgroupfs参数,找到下面那行,末尾添加即可
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=cgroupfs"(3)重启kubelet
systemctl daemon-reload
systemctl restart kubelet

  • 用kubeadm组件初始化cluster(master上操作)
(1)执行下面命令,xxxxxxxxx部分为master机器的固定ip,用来和node机器通信用。集群的组网我选择flannel方式,所以后面固定是--pod-network-cidr=10.244.0.0/16。
kubeadm init --apiserver-advertise-address xxxxxxxxx --pod-network-cidr=10.244.0.0/16
(2)上面命令执行完后会出现一串信息,找到类似下面的信息并保存,后面注册node到master使用。
kubeadm join xxxxxxxx:6443 --token xihr3k.9ivh8jm1c5zysyg3 --discovery-token-ca-cert-hash sha256:ab1590a3ee63c72d9f57f44caf9a459a97fad6f6d31966738e494a1824c74e64

  • master机器上创建普通用户(master操作)
这个是为了下一步配置kubectl使用。
(1)创建用户,指定/bin/bash作为默认shell
useradd -r -m -s /bin/bash xxx
(2)设置密码
passwd xxx
(3)添加sudo权限
usermod -G sudo usernametips:
(1)切换为root用户命令
su
(2)切换为某个普通用户命令
su username

  • 配置kubectl(master操作)
(1)切换到上一步创建的普通用户
su username
(2)执行下面命令
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
(3)添加kubectl提示功能
sudo echo "source <(kubectl completion bash)" >> ~/.bashrc

  • 安装pod网络(master操作)
(1)之心部署flannel网络的命令
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 

  • 注册node到master(node操作)
(1)找到kubeadm初始化master时保存的命令,分别在node上执行
kubeadm join xxxxxxxx:6443 --token xihr3k.9ivh8jm1c5zysyg3 --discovery-token-ca-cert-hash sha256:ab1590a3ee63c72d9f57f44caf9a459a97fad6f6d31966738e494a1824c74e64 

  • 查看集群的所有机器(master操作)
(1)使用之前创建的普通用户执行下面指令,看到有三台机器,说明成功了!!!
kubectl get nodes

小结

如果你成功搭建了k8s集群,恭喜你,可以愉快的玩耍了!
如果你还在继续折腾,在解决搭建过程遇到的问题,别灰心,just one more try!

从本文

(1)在搭建的过程中,发现修改了不少配置文件,实际使用的时候最好有backup思想,有backup,没在怕。

reference:

(1)https://kubernetes.io/
(2)《每天5分钟玩转kubernetes》

各位看官如果觉得本文对你有帮助,不妨点个赞和关注!!!

k8s master ping不通node_搭建k8s可用集群相关推荐

  1. k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...

  2. k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说搭建高可用集群,为什么要搭建高可用集群. 因为,首先我们说master节点是用来管理其 ...

  3. 12. 搭建高可用集群

    文章目录 12.1 Keepalived+Nginx 高可用集群(主从模式) 12.1.1 集群架构图 12.1.2 具体搭建步骤 12.1.2.1 搭建高可用集群基础环境 12.1.2.2 完成高可 ...

  4. 用Keepalived搭建高可用集群

    一.集群介绍 1.根据功能划分为两大类:高可用和负载均衡 2.高可用:一台工作,另一台冗余,当一台服务器故障宕机时,另一台服务器提供服务.开源软件有heartbeat,keepalived. 3.负载 ...

  5. 【Nginx那些事】nginx配置实例(四)搭建高可用集群

    [Nginx那些事]nginx配置实例(四)搭建高可用集群 nginx 实现高可用 安装keepalived keepalived配置 主Nginx服务器配置 从nginx服务器配置 脚本文件权限设置 ...

  6. Kafka基于Zookeeper搭建高可用集群实战

    Kafka基于Zookeeper搭建高可用集群实战 1 前言 1.1 高可用的由来 为何需要Replication? 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Bro ...

  7. 在 Kubernetes 中, 搭建高可用集群

    永久地址:在 Kubernetes 中, 搭建高可用集群(保存网址不迷路

  8. 【kubernetes】k8s使用客户端连接haproxy访问高可用集群流程详细说明【使用kubeconfig连接haproxy】【kubeconfig配置全部流程】

    文章目录 master高可用部署流程 客户端连接haproxy访问高可用集群 环境确认与准备[必看] 客户端连接happroxy说明 kubeconfig配置[master上操作] 客户端测试 说明 ...

  9. 16、Kubernetes搭建高可用集群

    文章目录 前言 一.高可用集群 1.1 高可用集群技术细节 二.部署高可用集群 2.1 准备环境 2.2 所有master节点部署keepalived 2.2.1 安装相关包和keepalived 2 ...

最新文章

  1. Directx教程(24) 简单的光照模型(3)
  2. yum提示Error: rpmdb open failed
  3. view controller lifecycle discussion - onInit
  4. 可行的DeltaSpike教程
  5. python数据算法有哪些_python算法与数据结构-常用查找算法一(37)
  6. OpenShift 4 之Kafka(2)-配置Kafka Bridge,通过HTTP访问Kafka Topic
  7. MyBatis分页插件PageHelper
  8. FragmentTransactionExtended
  9. 图片放大后失真不清晰,怎么办?
  10. “DOTA“巨魔战将连续晕眩的概率
  11. OMAP850 运行android
  12. 服务器白屏是系统在更新吗,远程服务器白屏怎么处理
  13. Python制作某电商平台商品竞拍脚本,能自动定时、抢拍、购买!吊不吊?
  14. python画素描画
  15. UTools工具下载网址
  16. oc中写c语言的方法,OC语言description步骤和sel
  17. 卧听夏蝉---app_trace和xmlhttp.responseText的关系
  18. 汇编语言---大小写字母转换
  19. Amazon数据集网址
  20. USDP使用笔记(三)大数据集群及组件启停

热门文章

  1. C#中字节数组与字符串的来回转换
  2. Entity Framework 出现 此 ObjectContext 实例已释放,不可再用于需要连接的操作 的错误...
  3. [原创]结构在Loadrunner中的应用
  4. linux下安装QQ
  5. CF70D Professor's task(动态凸包)
  6. JavaScript基本概念——数据类型
  7. 基于Gitolite的Git服务架设
  8. mysql主从复制,半同步,主主复制架构的实现
  9. 模板模式(template)解析例子
  10. Python 之父谈 Python