部署k8s集群(adm)(二)

                k8s   adm方式部署详解步骤

本章详解K8sadm方式部署(也可参考官方部署文档 https://docs.rancher.cn/    目前rancher提供的解决方案rke是最快的部署方式,官网有非常详细的解释)

本章部署步骤细致,更加详细了解部署过程

本章字体颜色分类

  •        棕色是输入的命令语句
  •        绿色是编辑文本内容
  •        红色是标红重要路径
  •        黑色是旁白

废话不多说,开始***************************************************************************************************

一,先准备三台虚拟机(这里我是以我虚拟机来演示)

centos7.6 k8s-master01 192.168.30.145
centos7.6 k8s-node01 192.168.30.144
centos7.6 k8s-node02 192.168.30.143

在VM创建虚拟机时,将内存给到2G以上(这里我是2G),cpu内核总数给到4以上,如图:

 最后,一定要各机之间可以联通,且都能够ping通网络!!!

========================================================================================================


 

以上准备工作做完后,开始为部署k8s初始化这三个节点机器
每台主机修改主机名并做好映射(/etc/hosts)
#hostnamectl set-hostname k8s-master01/node01/node02
安装依赖包
#yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
设置防火墙关闭和设置空规则
#systemctl stop firewalld && systemctl disable firewalld
#yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
关闭selinux
#swapoff -a &&sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
#setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/'  /etc/selinux/config
调整内核参数
#cat  > kubernetes.conf  << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52796963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
#cp kubernetes.conf  /etc/sysctl.d/
调整系统时区
#timedatectl set-timezone Asia/Shanghai
#timedatectl set-local-rtc 0
#systemctl restart rsyslog
#systemctl restart crond
关闭系统不需要服务
#systemctl stop postfix && systemctl disable postfix


设置rsyslogd和systemd journald
#mkdir /var/log/journal   
#mkdir /etc/systemd/journald.conf.d
#cat  /etc/systemd/journald.conf.d/99-proph et.conf   (内容如图:)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[Journal]
Storage=persistent
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurest=1000
SystemMaxUse=10G
SystemMaxFileSize=200M
MaxRetentionSec=2week
ForwardToSyslog=no
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#systemctl restart systemd-journald(如图)

 
7.6升级内核(3.10内核不稳定,不利于接下了的操作,如图)

 所以升级到4以上内核
#rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#yum --enablerepo=elrepo-kernel install -y kernel-lt
#grub2-set-default 'CentOS Linux (4.4.240-1.el7.elrepo.x86_64) 7 (Core)'

切换完后,每个节点重启(reboot)一下机器,让系统自动识别并使用新内核

 

 以上初始化就完了,总结一下,要注意各机之间的互通,和可以通网,防火墙要关闭和空规则,还有要注意要关闭swap,调整内核参数。各各节点按以上步骤做完,系统的初始化就做完了,下一步就是开始部署k8s集群(一台主,两台节点)


 

===========================================================================================================
                                                                              开始部署k8s
部署调度(所有节点)
#modprobe br_netfilter
#cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
#chmod 755 /etc/sysconfig/modules/ && bash /etc/sysconfig/modules/ipvs.modules
#lsmod | grep -e ip_vs -e nf_conntrack_ipv4

 
********************每个节点安装docker前需要的软件包********************************

#yum install -y yum-utils   device-mapper-persistent-data lvm2
*********************导入阿里云镜像仓库并安装docker-ce*************************
#yum-config-manager \
    --add-repo  \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum update -y && yum install -y docker-ce
这里安装时间比较长(大约624个包)慢慢等待即可..........

安装完后如图:


************创建docker目录***********
#mkdir /etc/docker
********************配置daemon*(如图)*************

创建docker-server目录

#mkdir -p /etc/systemd/system/docker.service.d
重启docker
#systemctl daemon-reload && systemctl restart docker && systemctl enable docker

********************************************安装kubeadm(主从配置)********************************
构建kubeadm源厂(如图):

安装

#yum -y install  kubeadm-1.15.1 kubectl-1.15.1   kubelet-1.15.1
#systemctl enable kubelet.service

***********************master节点先导入镜像(kubeadm-basic.images.tar.gz)*********
#tar -zxvf kubeadm-basic.images.tar.gz   
编辑一个导入脚本
cat > image.sh <<EOF
#!/bin/bash
ls /root/kubeadm-basic.images > /tmp/image.txt
cd /root/kubeadm-basic.images

for i in $( cat /tmp/image.txt )
do
        docker load -i $i
done
rm -rf /tmp/image.txt
EOF

*****************初始化节点*****************************
#kubeadm config print init-defaults > kubeadm-config.yaml

#vim  kubeadm-config.yaml                        (如图)

 

 

 

 

 

 

 

 

修改完成后
初始化k8s
#kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
完成后,可以查看一些信息(#vim  kubeadm-init.log)这个文件里包含很多信息和提示,下面的加入节点都需要参看这个Log日志里内容,根据里面的提示,来完成相应的操作!!
下面先简单解释一下kubeadm-init.log里的内容(如图:)

内容过多,这里的先截取重要的信息进行说明

 

 

 如图上[kubelet-start] 这一行,表明了kubelet的配置写入文件"/var/lib/kubelet/config.yaml"位置

如图[certs]这一行,指明了安全认证ca证书的存放位置  Using certificateDir folder "/etc/kubernetes/pki"

 

文件里最后几行(如图)

 

 

 

 这几行显示初始化成功,这里指明需要运行一下几条命令作为一个常规用户

 # mkdir -p $HOME/.kube
 # sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 # sudo chown $(id -u):$(id -g) $HOME/.kube/config

后面几行提示要给POD部署一个网路到集群

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

 

****************************加入主节点和其他工作节点*********************
#vim kubeadm-init.log
加入主按照提示来做
加入其他节点提示在最后几行,复制粘贴到其他节点上运行(上一步操作)
以上部署完成后,实时查看各节点是否运行成功(在主节点上)
#kubectl   get  pod  -n   kube-system             -w

 添加子节点(Node)

首先要确保node上有kubelet  kubeadm  kubeclt 已经安装,但是不要start

此时,在主节点上,打开kubeadm-init.log文件,找到最后几行,复制粘贴到子节点,回车即可(如图)

 

 完成后,查看节点是否加入到集群中

在主节点上查看

#kubectl get nodes

 但是这里不是ready ,是因为没有配置子节点网络
**********************************部署网络flannly*******************************

#mkdir k8s-flannly

#cd  k8s-flannly

#wget  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#kubectl create -f kube-flannel.yml

查看是否运行成功

#kubectl get pod -n kube-system

#kubectl  get nodes   

 

posted @ 2020-10-28 11:20  Supernova-L李  阅读(614)  评论(0编辑  收藏  举报