【摘要】 单机安装Kubernetes v1.13.2, 使用Flannel并开启IPVS

1, k8s节点准备工作

在每个master和node节点上准备如下工作

#1 设置并记下Master/Nodes节点之间以及内外直接NodePort通信所需的网络接口名,其IP作为Node IP。#2 编辑/etc/fstab,关掉swap分区(需要重启后生效)
#/swap.img      none    swap    sw      0       0#3 设置好/var/lib/docker目录, 可以在/etc/fstab里挂载一个单独磁盘
/dev/sdb on /var/lib/docker type ext4 (rw,relatime,data=ordered)#4 安装必要软件和下载工具
apt-get update
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -#5 若apt访问仓库需要代理,设置/etc/apt/apt.conf:
cat /etc/apt/apt.conf:
Acquire::http::Proxy "http://代理服务器IP:端口";
Acquire::https::Proxy "http://代理服务器IP:端口";
#6 移除ubuntu自带的docker.io并安装docker-ce
apt-get remove docker docker-engine docker.io containerd runc
apt-key fingerprint 0EBFCD88
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get install -y docker-ce
#7 若docker访问仓库需要代理,设置如下文件:
cat /etc/systemd/system/docker.service.d//http-proxy.conf:
[Service]
Environment="HTTP_PROXY=http://代理服务器IP:端口/" cat /etc/systemd/system/docker.service.d//https-proxy.conf:
[Service]
Environment="HTTPS_PROXY=http://代理服务器IP:端口/"
#8 增加k8s软件包源到apt的库表(bionic对应表没有放出来暂时用xenial代替)
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' >> /etc/apt/sources.list.d/kubernetes.list
#9 按装kubeadm即可安装kubeadm kubelet kubectl kubernetes-cni
sudo apt-get update
sudo apt-get install -y kubeadm
sudo apt-mark hold kubelet kubeadm kubectl
# 若事后发现网络有问题,可apt-get remove kubernetes-cni再单独重装
# 若事后发现k8s和docker在cgroupfs和systemd的drivers上不一致导致问题,可参考如下解决:
修改kubelet的启动配置文件/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
最后一个Environment后面增加一行:
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
最后一个ExecStart行的$KUBELET_EXTRA_ARGS之前增加$KUBELET_CGROUP_ARGS:
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_CGROUP_ARGS $KUBELET_EXTRA_ARGS
执行生效并确认kubelet服务重启OK:
systemctl daemon-reload
systemctl restart kubelet
systemctl status kubelet
#10 预先下载kubeadm init所需镜像
#方法1:网络直通gcr.io或者翻墙可通(博客另文有述), 执行kubeadm config image pull
#方法2:根据方法1得到镜像'k8s.gcr.io/镜像名'清单,从其他完成的node上执行 'docker save k8s.gcr.io/镜像名 > 镜像名.tar', 然后拷贝到本机执行 'docker load 镜像名' 加载进来
#方法3:从阿里云等替代源docker pull下来,tag为k8s.gcr.io前缀。新前缀镜像可以push到自己的仓库,也可以save出来备用。原有前缀可以docker rmi删除之。
#方法4:从阿里云等替代源docker pull下来,执行kubeadm init初始化之前修改kubeadm配置文件使用阿里源前缀。
例如1.13.2需要的镜像如下:
k8s.gcr.io/kube-proxy                v1.13.2             01cfa56edcfc        12 days ago         80.3MB
k8s.gcr.io/kube-apiserver            v1.13.2             177db4b8e93a        12 days ago         181MB
k8s.gcr.io/kube-controller-manager   v1.13.2             b9027a78d94c        12 days ago         146MB
k8s.gcr.io/kube-scheduler            v1.13.2             3193be46e0b3        12 days ago         79.6MB
k8s.gcr.io/coredns                   1.2.6               f59dcacceff4        2 months ago        40MB
k8s.gcr.io/etcd                      3.2.24              3cab8e1b9802        4 months ago        220MB
gcr.io/kubernetes-helm/tiller        v2.9.1              6253045f26c6        8 months ago        36.1MB
quay.io/coreos/flannel               v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        13 months ago       742kB

2, 运行一键k8s安装

kubeadm init  --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<master_node_ip>

3, 为跨节点互通安装flannel

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

这个文件里面搜flanneld有五个不同架构下的DaemonSet配置, 需要在amd64架构那个DaemonSet的args下增加--iface <node-ip-iface-name>

然后执行:

kubectl apply -f kube-flannel.yml

4, 让dns等pod也能在master node上驻扎

若只有master一个节点,coredns的某些pod可能不能启动,需要node去污点解决:

kubect get nodes

kubectl taint nodes <node_name> node-role.kubernetes.io/master-

kubectl get pods --all-namespace 确保一切pod进入running状态, 否则用kubectl -n kube-system logs <pod-name>查看问题

5, 开启ipvs

集群的svc和pod数量较多会导致iptabes的DNAT规则剧增性能难看,需要开启ipset+ipvs去承担DNAT工作:

-- 安装必须包:

apt install ipset ipvsadm

-- 确保mod存在:

for i in ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack_ipv4; do modprobe $i; done

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

-- 编辑etcd里的ConfigMap:

kubectl edit cm kube-proxy -n kube-system, 修改为 mode: "ipvs"

-- 删除kube-proxy全部pods使之重建:

kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'

参考文档

https://www.kubernetes.org.cn/4956.html

来源:华为云社区  作者:divfor

通过kubeadm安装kubernetes 1.13.2相关推荐

  1. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  2. kubeadm安装kubernetes 1.13.2多master高可用集群

    1. 简介 Kubernetes v1.13版本发布后,kubeadm才正式进入GA,可以生产使用,用kubeadm部署kubernetes集群也是以后的发展趋势.目前Kubernetes的对应镜像仓 ...

  3. kubeadm安装kubernetes 1.13.1集群完整部署记录

    k8s是什么 Kubernetes简称为k8s,它是 Google 开源的容器集群管理系统.在 Docker 技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提 ...

  4. 使用kubeadm 安装 kuberntes 1.13.3

    # kubeadm安装kubernetes步骤说明: ## 第一步 ### 准备系统环境 - Repo仓库准备 1. docker-ce.repo 2. kubernetes.repo - 停用服务 ...

  5. 使用kubeadm安装Kubernetes

    使用kubeadm安装Kubernetes kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm ...

  6. 如何使用 kubeadm 安装 Kubernetes?

    本文讲解如何使用 kubeadm 安装 kubernetes 1.15.2. 作者 | 阿文 责编 | 郭芮 kubeadm 能帮助您建立一个小型的符合最佳实践的 Kubernetes 集群.它可以运 ...

  7. centos7.6使用kubeadm安装kubernetes的master worker节点笔记及遇到的坑

    个人博客原文地址:http://www.lampnick.com/php/760 本文目标 安装docker及设置docker代理 安装kubeadm 使用kubeadm初始化k8s Master节点 ...

  8. 使用kubeadm安装kubernetes高可用集群

    kubeadm安装kubernetes高可用集群搭建  第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...

  9. Centos7 二进制安装 Kubernetes 1.13

    目录 1.目录 1.1.什么是 Kubernetes? 1.2.Kubernetes 有哪些优势? 2.环境准备 2.1.网络配置 2.2.更改 HOSTNAME 2.3.配置ssh免密码登录登录 2 ...

最新文章

  1. FPGA之道(41)HDL的三种描述方式
  2. 【作死】更新macOS Mojave后Vagrant无法使用
  3. 如何让带有批注等修改痕迹的word文档编程“正规”文档?
  4. nginx for discuz 伪静态规则
  5. Day7: Linux基础片:系统监控
  6. 甜甜圈和拓扑学也有关系,你想的到吗?
  7. pip/pip3更换国内源
  8. 交换二叉树的每个节点的左右子树
  9. log4j日志文件 log4j.xml log4j.properties配置
  10. 《SMART原则》分享
  11. 录像机输入几次错误密码后被锁定
  12. Excel里怎么设置输入可以打钩的选择框?
  13. 计算机主机内部的结构,台式电脑主机内部结构介绍
  14. 【经典面试题】实现平方根函数sqrt
  15. 计算机桌面的任务栏,屏幕任务栏消失怎么办_电脑屏幕上任务栏不见了的解决方法...
  16. 微服务调用链追踪中心搭建
  17. 对立志成为DBA的人的几点建议
  18. java纲要_幼儿园综合素质笔试大纲
  19. Android彻底解决Youtube和Google play store等套件报错崩溃的问题
  20. intellij IDEA 设置格式化代码后多行空行转为一行

热门文章

  1. 长微博android,Android 上最强大的长微博工具:BlackLight 长微博
  2. python 闭包和装饰器详解_实力讲解,一文读懂Python闭包与装饰器!
  3. bagging和时间序列预测_时间序列多步预测的五种策略
  4. c语言用户管理系统的知识,C语言系统用户管理系统
  5. 浏览器安全检查己通过_Edge浏览器(Chromium)——从XSS到接管网页
  6. 依赖反转原则DIP 与使用了Repository模式的asp.net core项目结构
  7. 防止a标签跳转的几种方法
  8. 安装.Net Standard 2.0, Impressive
  9. hdu 1134 卡特兰数(大数模板)
  10. 第三次IT浪潮将使白领收入成倍不均-信息革命