使用kubeadm安装k8s集群

今天按照网上的教程使用kubeadm安装了K8s集群,记录安装操作如下:
附上原地址:https://www.kubernetes.org.cn/5551.html

准备工作

  • 资源准备
    IP | 主机名 | 系统
    --------- | --------- | ---------
    192.168.8.117 | master-192-168-8-117 | centos7
    192.168.8.52 | node-192-168-8-52 | centos7
    192.168.8.38 | node-192-168-8-38 | centos7

配置主机名后,在每个机器上添加hosts,如下:

192.168.8.117 master-192-168-8-117
192.168.8.38 node-192-168-8-38
192.168.8.52 node-192-168-8-52
  • 关闭防火墙、selinux
systemctl stop firewalld
systemctl disable firewalls
setenforce 0
vim /etc/selinux/config
  SELINUX=disabled

注意:修改selinux/config文件后需要重启系统生效,临时调整使用setenforce 0

  • 调整内核参数
    在/etc/sysctl.conf文件中增加以下内容,加载br_netfilter内核模块后通过sysctl使变更生效。
    K8s从1.8开始要求系统关闭swap,否则kubelet无法启动,通过swapoff -a命令关闭,并在/etc/fstab文件中删除开机自动装载,并修改swappiness参数
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
modprobe br_netfilter
sysctl -p

注:如实在不想关闭swap,或对机器上其他应用有影响,可修改kubelet配置,去掉对swap的限制,修改/etc/sysconfig/kubelet,加上如下配置

KUBELET_EXTRA_ARGS=--fail-swap-on=false
  • 准备ipvs环境
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4

通过lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看系统是否成功加载响应模块
另外需要安装ipvsadm用于管理ipvs配置
如果以上条件无法满足,及时kube-proxy开启了ipvs,也会回退到iptables

  • 安装docker
    导入docker repo文件后通过yum进行安装
yum install yum-utils
yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl enable docker
  • 修改docker 的cgroup driver
    根据官方的文档内容,在systemd为init system的系统中,只是用systemd作为docker的cgroup driver,可以让服务器节点在资源紧张的情况下更加稳定,
    创建以下文件内容/etc/docker/daemon.json
{"exec-opts": ["native.cgroupdrivers=systemd"] }

重启docker后可以通过docker info命令查看

安装K8s

  • 安装kubeadm、kubelet、kubectl
    这里使用阿里云的镜像站进行安装,先配置yum repo
[K8s]
name = K8s repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

设置kubelet的开机自启动

systemctl enable kubelet
  • 初始化集群
    使用kubeadm config print init-defaults可以获取到集群的默认配置,基于此配置,我们可以自行调整策略,简述如下kubeadm.yaml:
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.8.117         #定义API地址为master节点
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: master-192-168-8-117
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.15.0        #修改版本号,默认还是v1.14
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12     #定义service/pod的网络地址,其中pod地址必须和后面的flannel地址段相同
  podSubnet: 10.244.0.0/16
scheduler: {}

使用命令kubeadm init --config kubeadm.yaml命令即可进入集群初始化阶段;
安装命令输出的提示,创建~/.kube目录,并复制kube.config文件到目录下就完成了kubelet的配置。
最后的节点加入集群的命令一定要保存下来,后续如需要扩容也通过改命令完成;

因默认使用的镜像无法正常访问,我们可以先把镜像从阿里云镜像站pull下来,在修改tag的方式;
使用kubeadm config images list命令获取到安装所需的镜像列表,并写入image.list文件,将以下脚本copy到同目录下执行即可

cat image.list | while read line
do
    aliImage=`echo $line |sed "s/k8s.gcr.io/registry.cn-hangzhou.aliyuncs.com\/google_containers/g"`
    docker pull $aliImage
    docker tag $aliImage $line
done

初始化完成后可通过命令查看集群状态

kubectl  get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok
scheduler            Healthy   ok
etcd-0               Healthy   {"health":"true"}
  • 安装flannel
    下载flannel.yml文件直接通过kubectl命令安装即可
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml

如果集群存在多个网卡,需要在kube-flannel.yml中指定内网网卡,在flannel的启动参数中增加-iface=eth0
使用kubectl get pod -n kube-system可以查看flannel的pod处于running状态即安装成功,
此时通过kubectl get node可以看到master节点已经处于ready状态

  • 增加node节点
    使用前面初始化完成后输出的kubeadm join命令在node节点上执行,就完成了node节点加入集群的操作
  • 移除节点
    先在master节点上执行
kubectl drain node-192-168-8-52 --delete-local-data --force --ignore-daemonsets
kubectl delete node  node-192-168-8-52

在node节点上清空配置

kubeadm reset
ifconfig flannel.1 down
ip link delete flannel.1

在其他node上执行

kubeadm delete node node-192-168-8-52
  • 开启ipvs
    如果前面ipvs相关的准备都正确完成,在这里就可以修改kubeproxy的配置使用ipvs
kubectl edit configmap kube-proxy -n kube-system

将其中的mode修改为mode:"ipvs"
再重启各节点上的kube-proxy
kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
重启完成,后查看kube-proxy的log日志,如有输出Using ipvs Proxier说明已经开启了ipvs,
在node上可以通过ipvsadm -Ln查看转发配置

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