本地环境搭建学习Kubernetes集群

背景

标题由于公司架构主要是采用公有云k8s运维部署,所以在学习了解过程中,记录本地安装k8s主要过程。
本文主要记录了,在虚拟机环境下,安装Kubernetes的过程,其中有很多本地踩过的坑,撰写本文,
也希望能够帮助到大家。

1.安装说明

安装环境 由于博主使用的是mac系统,所以,虚拟机使用的是Parallels Desktop(14.1.3),个人感觉这个是在mac很好用的虚拟机,安装很简单,网上都可以找到教程。

  • 虚拟机系统 CentOS7
  • 安装规划
    mster节点 1台
    node节点 1台
    虚拟机网络配置 主机能够ping上述虚拟机的任何一台;上述两台机之前需要能够互相ping通,而且需要保证master节点与node节点的IP地址保持不变。虚拟机网络配置这块,本文给不了教程,大家还需要搜索资料。如果是Parallels Desktop虚拟机,采用默认的就好。
    安装方法 采用Kubernetes提供的kebuadm进行安装。由于自己手动部署配置,很复杂,本文采用了Kubernetes自带的kubeadm进行安装。

2.安装步骤

2.1安装Docker

1. 删除机器上的旧版Docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
2. 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
5.开启Docker服务
sudo service docker start
6.添加用户组 配置系统开机启动
  # 添加用户组
  sudo groupadd docker
  sudo usermod -aG docker $USER

  #系统启动
  sudo systemctl enable docker
7.安装成功后,可以使用docker version 查看docker的运行情况。

以上的安装步骤,参考阿里云的安装说明,https://yq.aliyun.com/articles/110806。其中也包含其他系统的安装Docker说明。安装成功后,鉴于国内下载镜像速度的原因,也可以配置docker的镜像加速器,具体可参考阿里云的开源镜像市场,https://developer.aliyun.com/mirror。其中包含很多的源,后面用到k8s的国内源,在上面也可以找到。​​

2.2 安装kubeadm,kubectl,kubelet

在安装之前,主要是针对CentOS系统的一些配置,类似关闭内存共享,防火墙等等。

# 1.关闭swap
 # 临时禁用
 sudo swapoff -a
 # 永久禁用(推荐)先打开对于文件,注释掉swap那一行
 vim /etc/fstab 

# 2.关闭SELinux
 # 临时禁用
 setenforce 0
 # 永久禁用(推荐)
 sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux

# 3.关闭防火墙
 systemctl disable firewalld
 systemctl stop firewalld

# 4.修改网络参数(如果这步不设置,后面安装会有问题)
 cat <<EOF > /etc/sysctl.d/k8s.conf 
 net.bridge.bridge-nf-call-ip6tables = 1 
 net.bridge.bridge-nf-call-iptables = 1 
 EOF

 sysctl --system

# 5.修改国内安装的k8s镜像下载源(如果能够科学上网,可以直接使用google对应的官方安装文档,直接安装)
 cat <<EOF > /etc/yum.repos.d/kubernetes.repo
 [kubernetes]
 name=Kubernetes
 baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
 enabled=1
 gpgcheck=0
 repo_gpgcheck=0
 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
 https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
 EOF

 ## 重建yum缓存
 yum clean all 
 yum makecache fast 
 yum -y update

# 6.执行安装
 # 这步执行的时间依赖于你自己的网络,会需要一段时间,采用以下命令会安装最新版本,如果按照指定版本需要带上版本号。如果在这一步指定了版本号,在集群初始化的时候,也必须加上版本号。
 yum install -y kubelet kubeadm kubectl


 # 安装成功后验证
 kubeadm version

 #设置开机启动
 systemctl enable kubelet && systemctl statt kubelet

至此,以上的步骤(包括安装Docker)都必须在master与node节点中执行。

2.3 初始化集群(初始化master)

# 初始化k8s集群 注意命令中的版本号。由于之前安装 kubeadm kubectl kebulet 采用的是最新版本,所以在初始化的时候也必须制定对应的版本号。'--pod-network-cidr=10.244.0.0/16'参数,是由于需要安装fannel网络时,必须指定的。关于fannel网络及安装,大家可以查看相关资料。https://github.com/coreos/flannel/blob/master/Documentation/kubernetes.md。 
# 在初始化成功后,安装日志会打印一段类似于‘kubeadm join 10.211.55.39:6443 --token jh7j30.3e4igzontf4vep3x --discovery-token-ca-cert-hash sha256:ca6086e0594aa2935bc1c6f2152739119c5179ddcdaf3a2bd95ea827c2d3e305’ 的日志,该命令就是node节点加入此集群的命令。
# 初始化成功后,日志还会打印一些叫你执行的sh日志('mkdir -p $HOME/.kube 等等,总共3条'),目的主要是用户的相关操作,直接复制执行即可
kubeadm init --image-repository registry.aliyuncs.com/google_containers -kubernetes-version v1.16.0 --pod-network-cidr=10.244.0.0/16


# 安装fannel 大家可以参考kubeadm git地址:https://github.com/coreos/flannel#flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

此步骤,只需在master节点上执行。等待系统下载对应的镜像后,使用kubectl get pod --all-namespace来查看当前集群中的pod运行情况,待所有的pod处于running状态,及表示master初始化成功。

在这里插入图片描述

2.4 将node加入集群

在node节点上,执行上述打印日志的‘kubeadm join .....’ 日志。然后,在maste节点上,执行kubectl get node,查看节点。如果类似于下图,则恭喜你,Kubernetes安装成功!

在这里插入图片描述

2.5 node节点ROLES为none处理

在上述node截图中,如果ROLES列为none,则通过打标签来进行修复。其实,该列的实现就是通过标签来实现,不过这个标签比较特殊。如果master节点的ROLES为none,则可为master的节点打上标签node-role.kubernetes.io/master=;如果node节点的ROLES为none,则可为node节点打上标签node-role.kubernetes.io/node=

总结:
文章主要以实用参考,并没有提供每个步骤执行截图,所以对于新手,可能不太适合。仔细把整个流程首先梳理一遍,然后再动手,可能效果会更好。安装主要痛点就是在下载Kubernetes镜像问题,目前采用国内的阿里云的源,问题不大。不过也会可能出现下载不了的问题,我第一次安装的时候,在执行yum install -y kubelet kubeadm kubectl进行安装时,就提示下载不了对应的镜像,如果出现这种情况,要么就等阿里云同步成功,要么就使用其他的源,华为或者网易貌似也有。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容