我是靠谱客的博主 温柔机器猫,这篇文章主要介绍Kubernetes集群安装环境准备安装,现在分享给大家,希望可以做个参考。

环境准备

主机节点cpu内存硬盘
192.168.233.140master124g30g
192.168.233.141node124g30g
192.168.233.142node224g30g
192.168.233.143harbor仓库24g30g

以下的配置在140,141,142都需要进行配置

修改主机名

hostnamectl set-hostname k8s-master1
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

修改host文件

192.168.233.140 k8s-master1
192.168.233.141 k8s-node1
192.168.233.142 k8s-node2
192.168.233.143 hub.bushro.com

安装依赖包

yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

设置防火墙为iptables并设置空规则

systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

关闭SELINUX

setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

关闭swap

k8s在初始化的时候会检查swap分区是否关闭,如果没有关闭的话容器就有可能会跑在虚拟内存里面。降低工作效率

swapoff -a && sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab

调整系统内核参数

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 #禁止使用swap空间,只有当系统OOM时才允许使用它
vm.overcommit_memory=1 #不检查物理内存是否够用
vm.panic_on_oom=0 #开启00M
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf

调整时区

#设置系统时区为中国/上海
timedatectl set-timezone Asia/Shanghai
#将当前的UTC时间写入硬件时钟
timedatectl set-local-rtc 0
#重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond

时间同步

yum install chrony -y
vim /etc/chrony.conf

在这里插入图片描述

[root@k8s-master1 etc]# systemctl restart chronyd
[root@k8s-master1 etc]# systemctl enable chronyd
[root@k8s-master1 etc]# netstat -luntp|grep 123

客户端修改,只修改需要同步的主机

yum install chrony -y
vim /etc/chrony.conf
server 192.168.233.140 iburst
chronyc sources

在这里插入图片描述

关闭系统不需要服务

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-prophet.conf <<EOF
[Journal]
# 持久化保存到磁盘
Storage=persistent

#压缩历史日志
Compress=yes

SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000

#最大占用空间10G
SystemMaxUse=10G

#单日志文件最大200M
SystemMaxFileSize=200M

#日志保存时间2周
MaxRetentionSec=2week

#不将日志转发到syslog
ForwardToSyslog=no
EOF

systemctl restart systemd-journald

升级系统内核到4.4

CentOS 7.x系统自带的3.10.x内核存在一些Bugs,导致运行的Docker、Kubernetes 不稳定

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#安装完成后检查/boot/ grub2/grub.cfg中对应内核menuentry 中是否包含initrd16 配置,如果没有,再安装一次!
yum --enablerepo=elrepo-kernel install -y kernel-lt
#设置开机从新内核启动
grub2-set-default "Centos Linux (4.4.182-1.el7.elrepo.x86_64) 7 (Core)"
# 重启后
reboot
uname -r

kube-proxy开启ipvs的前置条件

解决svc和pod之间的调度关系

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/ipvs.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
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum update -y && yum install -y docker-ce
##创建/etc/docker目录
mkdir /etc/docker

#配置daemon.
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
   }
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
#重启docker服务
systemctl daemon-reload & systemctl restart docker && systemctl enable docker

安装kubeadm(主从配置)

  • kubelet:运行在cluster所有节点上,负责启动POD和容器
  • kubeadm:用于初始化cluster
  • kubectl:kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all 
## 查看可以安装的版本
yum list kubelet kubeadm kubectl  --showduplicates|sort -r
yum -y install kubeadm-1.15.1 kubect1-1.15.1 kubelet-1.15.1
## 报错
yum install kubernetes-cni = 0.7.5 -y
## 开机自启动
systemctl enable kubelet.service 
## 如果低版本装不上可以换其它的版本最新的1.18.4
yum -y install kubeadm-1.18.4 kubect1-1.18.4 kubelet-1.18.4
查看 kubeadm 会用到的镜像,就是后面导入到docker里面的镜像
kubeadm config images list

导入相应的镜像,并且放到docker里面

#!/bin/bash
ls /root/kubeadm-basic.images > /tmp/image-list.txt

cd /root/kubeadm-basic.images

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

rm -rf /tmp/image-list.txt

传输到其他的主机

scp -r kubeadm-basic.images load-images.sh root@k8s-node1:/root/

镜像下载

链接:https://pan.baidu.com/s/1d-0eAYsqI7YHl_eLKUQ76Q
提取码:4bpv
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V5的分享

初始化主节点

kubeadm config print init-defaults > kubeadm-config.yaml
localAPIEndpoint:
advertiseAddress: 192.168.233.140
kubernetesVersion: v1.15.1
networking:
podSubnet: "10.244.0.0/16”
serviceSubnet: 10.96.0.0/12

末尾添加的
-----
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates :
  SupportIPVSProxyMode: true
mode: ipvs

kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs| tee kubeadm-init.log

加入主节点以及其余工作节点

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

在/usr/local/目录创建一个专门放k8s的目录install-k8s,把相关的的东西放过去。

在这里插入图片描述

部署网络

进入到install-k8s>plugin>flannel目录下,下载kube-flannel.yml。下载不了的是因为网站被墙了,建议在/etc/hosts文件添加一条199.232.68.133 raw.githubusercontent.com就可以正常下载了。

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i 's#quay.io#quay-mirror.qiniu.com#g' kube-flannel.yml
kubectl apply -f kube-flannel.yml
kubectl get pod -n kube-system
kubectl get node

在这里插入图片描述

其它子节点加入

在kubeadm-init.log文件最后面有

kubeadm join 192.168.233.140:6443 --token abcdef.0123456789abcdef 
    --discovery-token-ca-cert-hash sha256:cb31ded5bc2bd6c544d7d6e7034df3f81d913a91299c193f56806c35e57a3dad
kubectl get pod -n kube-system -o wide
kubectl get node
## 发现node2的flannel的镜像下载失败了,然后从141里面拷贝了一份到142。
docker save 4e9f801d2217>flannel.tar
docker load <flannel.tar
docker tag 4e9f801d2217 quay-mirror.qiniu.com/coreos/flannel:v0.12.0-amd64

在这里插入图片描述

子节点加入完成

在这里插入图片描述

最后

以上就是温柔机器猫最近收集整理的关于Kubernetes集群安装环境准备安装的全部内容,更多相关Kubernetes集群安装环境准备安装内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部