vlambda博客
学习文章列表

k8s系列-12-离线二进制方式进行安装k8s

老板们,点个关注吧。

k8s系列-12-离线二进制方式进行安装k8s

 

有些情况不支持你连接外网,那么这种情况下就不支持kubespray方式了,那如何安装kubenetes呢?下面我们再采用二进制的方式来进行安装下看看吧。

k8s系列-12-离线二进制方式进行安装k8s

 

介绍

二进制安装方式,也被称为kubernetes-the-hard-way(k8s的困难方法),有以下特征:
生产高可用证书永不过期不依赖第三方ansible等工具采用本地代理,不依赖haproxy或者keepalived

那么这种方式适合哪种人使用呢?
深入学习的人喜欢掌控每个组件的人正在部署生产环境的人
上面太官方了哈,简单的来说,这种方式就是你能控制每个组件如何进行安装,而不像kubespary那种方式,直接一键化部署了,很多东西自己都不能掌控,出问题都不知道是哪儿的问题。

不过两种方式如何取舍,还是要看个人习惯哈。不能说哪种好,哪种差。各有千秋吧。


环境

CPU>=2核,内存>=2G,其他信息如下:
node-name ip-address
role
node1
192.168.112.130
master、etcd
node2
192.168.112.131 master、worker、etcd
node3
192.168.112.132 worker、etcd
本次所有安装使用root用户进行。


配置主机名和路由

PS:需要在三个节点上都进行操作
[root@localhost ~]# vim /etc/hostname node1  # 三台服务器每台写自己的名字[root@localhost ~]# hostname node1[root@localhost ~]# bash[root@node1 ~]# vim /etc/hosts192.168.112.130 node1192.168.112.131 node2192.168.112.132 node3[root@node1 ~]#


安装依赖

PS:需要在三个节点上都进行操作
# 更新yum源[root@node1 ~]# yum update -y
# 下载依赖[root@node1 ~]# yum install -y socat conntrack ipvsadm ipset jq sysstat curl iptables libseccomp yum-utils


策略调整

PS:需要在三个节点上都进行操作
[root@node1 ~]# setenforce 0[root@node1 ~]# vim /etc/selinux/configSELINUX=disabled[root@node1 ~]# systemctl stop firewalld.service[root@node1 ~]# systemctl disable firewalld.service[root@node1 ~]# iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT[root@node1 ~]# swapoff -a[root@node1 ~]# systemctl stop dnsmasq.service[root@node1 ~]# systemctl disable dnsmasq.service


参数设置

PS:需要在三个节点上都进行操作
[root@node1 ~]# vim /etc/sysctl.d/kubernetes.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_nonlocal_bind = 1net.ipv4.ip_forward = 1vm.swappiness = 0vm.overcommit_memory = 1[root@node1 ~]# sysctl -p /etc/sysctl.d/kubernetes.conf


免密配置

PS:在node1节点操作即可
[root@node1 ~]# ssh-keygen  # 一路回车就行[root@node1 ~]# cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDImB4dg1iR14Ghmd6J2h2BhBxZi59NR3xgD3dXWn8i3VPpzydKhR5bw2Q8+gqQPGqUtGCWbjtf30KrMGm2idpf8GJu5caJVMSFoscSYbv9nv9UvNCEuyDSgmpoZSDBxNK9CxBSNSBCvyOcFrjGyEyrBBCyjFVH/T71hG9SUwvdR3E38Qyv7/npYmVaoLADvDDf9E1c6siQLe8jbhvz6fjXVXLFG00/+1p6qox8dvNKQK30D7rYB8NunqnMN4vDFarQSCRJ8u6x9yThqTV0j8G8pXX3YkmMbTJT7BqAjeF3fuDgoy57/s3CgjxPqKE09tqx2B9Qaj/Lud/8xCfQ2Xvr root@node1[root@node1 ~]#


PS:需要在三个节点上都进行操作,包括node1
# 将上一步cat之后获取的信息进行分发[root@node1 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDImB4dg1iR14Ghmd6J2h2BhBxZi59NR3xgD3dXWn8i3VPpzydKhR5bw2Q8+gqQPGqUtGCWbjtf30KrMGm2idpf8GJu5caJVMSFoscSYbv9nv9UvNCEuyDSgmpoZSDBxNK9CxBSNSBCvyOcFrjGyEyrBBCyjFVH/T71hG9SUwvdR3E38Qyv7/npYmVaoLADvDDf9E1c6siQLe8jbhvz6fjXVXLFG00/+1p6qox8dvNKQK30D7rYB8NunqnMN4vDFarQSCRJ8u6x9yThqTV0j8G8pXX3YkmMbTJT7BqAjeF3fuDgoy57/s3CgjxPqKE09tqx2B9Qaj/Lud/8xCfQ2Xvr root@node1" >> ~/.ssh/authorized_keys[root@node1 ~]#


软件包下载



软件包分发

上传到任一节点上,我这里上传的是node1节点。

[root@node1 ~]# pwd/root[root@node1 ~]# tar xf kubernetes-v1.20.2.tar.gz [root@node1 ~]# cd kubernetes-v1.20.2/[root@node1 kubernetes-v1.20.2]# lsetcd-v3.4.10-linux-amd64.tar.gz  kube-apiserver  kube-controller-manager  kubectl  kubelet  kube-proxy  kube-scheduler[root@node1 kubernetes-v1.20.2]# chmod +x kube*# 分发master组件[root@node1 kubernetes-v1.20.2]# MASTERS=(node1 node2)[root@node1 kubernetes-v1.20.2]# for instance in ${MASTERS[@]}; do scp kube-apiserver kube-controller-manager kube-scheduler kubectl root@${instance}:/usr/local/bin/; done# 分发worker组件[root@node1 kubernetes-v1.20.2]# WORKERS=(node2 node3)[root@node1 kubernetes-v1.20.2]# for instance in ${WORKERS[@]}; do scp kubelet kube-proxy root@${instance}:/usr/local/bin/; done# 分发etcd组件[root@node1 kubernetes-v1.20.2]# tar xf etcd-v3.4.10-linux-amd64.tar.gz [root@node1 kubernetes-v1.20.2]# cd etcd-v3.4.10-linux-amd64/[root@node1 etcd-v3.4.10-linux-amd64]# ETCDS=(node1 node2 node3)[root@node1 etcd-v3.4.10-linux-amd64]# for instance in ${ETCDS[@]}; do scp etcd etcdctl root@${instance}:/usr/local/bin/; done


至此,本文结束。基础环境就准备好了,接下来就开始具体安装每一个小组件。


往期推荐

 

添加关注,带你高效运维