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

Posted 公号运维家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s系列-12-离线二进制方式进行安装k8s相关的知识,希望对你有一定的参考价值。

老板们,点个关注吧。k8s系列-12-离线二进制方式进行安装k8s_vim

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


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

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


介绍

二进制安装方式,也被称为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/hosts
192.168.112.130 node1
192.168.112.131 node2
192.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/config
SELINUX=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.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
vm.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 ~]#


软件包下载

可以从google上进行下载,我这里也准备了一份下载好的,在公众号“运维家”后台回复 “二进制k8s” ,即可获取下载地址。我看了下,最新版貌似是1.23.4版本,我这里提供的是1.20.2版本。 



软件包分发

上传到任一节点上,我这里上传的是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]# ls
etcd-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


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


以上是关于k8s系列-12-离线二进制方式进行安装k8s的主要内容,如果未能解决你的问题,请参考以下文章

k8s 二进制部署之 node 安装 docker

使用kubeadm离线下载k8s安装镜像

CentOS 8 二进制 高可用 安装 k8s 1.16.x

Docker&K8s---跟我一步步部署K8s(二进制安装部署)

Docker&K8s---跟我一步步部署K8s(二进制安装部署)

微服务架构 - 离线部署k8s平台并部署测试实例