kubeadm方式安装k8s集群
部署单master集群一、集群规划k8s-master110.0.19.127k8s-node110.0.19.128k8s-node210.0.19.129k8s版本:1.16安装方式:离线-二进制操作系统版本:7.7二、初始化服务器1 关闭防火墙【所有主节点都执行】[root@k8s-master1 ~]# systemctl stop firewalld[root@k8s-master1 ~
部署单master集群
一、集群规划
k8s-master1 | 10.0.19.127 |
---|---|
k8s-node1 | 10.0.19.128 |
k8s-node2 | 10.0.19.129 |
k8s版本:1.16
安装方式:kubeadm
操作系统版本:7.3
二、初始化服务器
1 设置防火墙为 Iptables 并设置空规则
【所有节点都执行】
[root@k8s-master1 ~]# systemctl stop firewalld
[root@k8s-master1 ~]# systemctl disable firewalld
[root@k8s-master1 ~]# yum -y install iptables-services ipvsadm && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
2 关闭selinux
【所有节点都执行】
# setenforce 0
# vim /etc/selinux/config
修改SELINUX=enforcing 为 SELINUX=disabled
3 配置主机名
【所有节点都执行】
hostnamectl set-hostname 主机名
4 配置名称解析
【所有节点都执行】
# vi /etc/hosts
添加如下三行
10.0.19.127 k8s-master1
10.0.19.128 k8s-node1
10.0.19.129 k8s-node2
5 配置时间同步
选择一个节点作为服务端,剩下的作为客户端
master1为时间服务器的服务端
其他的为时间服务器的客户端
1)配置k8s-master1
# yum install chrony -y
# vim /etc/chrony.config
修改三项
server 127.127.1.0 iburst
allow 10.0.19.0/24
local stratum 10
# systemctl start chronyd
# systemctl enable chronyd
# ss -unl | grep 123
UNCONN 0 0 *:123 *:*
2)配置k8s-node1 和k8s-node2
# yum install chrony -y
# vim /etc/chrony.conf
server 10.0.19.127 iburst
# systemctl start chronyd
# systemctl enable chronyd
# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* k8s-master1 10 6 17 4 +11us[ +79us] +/- 95us
6 关闭交换分区
【所有节点都执行】
[root@k8s-master1 ~]# swapoff -a
[root@k8s-master1 ~]# vim /etc/fstab
删除一行:
检查是否关闭成功
[root@k8s-master1 ~]# free -m
total used free shared buff/cache available
Mem: 2827 157 2288 9 380 2514
Swap: 0 0 0
7、调整内核参数,对于 K8S
【所有节点都执行】
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
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
EOF
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf
出现,不用担心,因为没开通网桥我们后面会开通
8、关闭系统不需要服务
systemctl stop postfix && systemctl disable postfix
9、设置 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
10、升级系统内核为 4.44
【所有节点都执行】
CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,例如: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
我已经下载到百度网盘:
链接:https://pan.baidu.com/s/1kQ48A-St03MzY2BWakad0Q
提取码:pwcq
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
# 查看内核版本
cat /boot/grub2/grub.cfg |grep 4.4
# 设置开机从新内核启动
grub2-set-default 'CentOS Linux (4.4.222-1.el7.elrepo.x86_64) 7 (Core)'
# 重启
init 6
# 查看内核
uname -r
三、部署k8s
1、kube-proxy开启ipvs的前置条件
【所有节点都执行】
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
2、安装 Docker 软件,建议最小18.7版本
【所有节点都执行】
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 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"
},
"insecure-registries": ["hub.hongfu.com"]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
# 重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
3、安装 Kubeadm
【所有节点都执行】
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 -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
systemctl enable kubelet.service
4、导入镜像
【所有节点都执行】
可以自己找,百度云链接:
链接:https://pan.baidu.com/s/1BZINA8OzJbYpDjY_uckLTA
提取码:o4vx
[root@k8s-master1 ~]# ls
anaconda-ks.cfg kernel-lt-4.4.222-1.el7.elrepo.x86_64.rpm kubeadm-basic.images.tar.gz kubernetes.conf
[root@k8s-master1 ~]# tar xf kubeadm-basic.images.tar.gz
[root@k8s-master1 ~]# ls kubeadm-basic.images
apiserver.tar coredns.tar etcd.tar kubec-con-man.tar pause.tar proxy.tar scheduler.tar
[root@k8s-master1 ~]# docker load -i /root/kubeadm-basic.images/apiserver.tar
[root@k8s-master1 ~]# docker load -i /root/kubeadm-basic.images/coredns.tar
[root@k8s-master1 ~]# docker load -i /root/kubeadm-basic.images/etcd.tar
[root@k8s-master1 ~]# docker load -i /root/kubeadm-basic.images/kubec-con-man.tar
[root@k8s-master1 ~]# docker load -i /root/kubeadm-basic.images/pause.tar
[root@k8s-master1 ~]# docker load -i /root/kubeadm-basic.images/proxy.tar
[root@k8s-master1 ~]# docker load -i /root/kubeadm-basic.images/scheduler.tar
5、初始化主节点
【只在master节点执行】
生成初始化文件
[root@k8s-master1 ~]# kubeadm config print init-defaults > kubeadm-config.yaml
localAPIEndpoint:
advertiseAddress: 10.0.19.127
kubernetesVersion: v1.15.1
networking:
serviceSubnet: 10.96.0.0/12
podSubnet: "10.244.0.0/16"
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
SupportIPVSProxyMode: true
mode: ipvs
我的改动
根据kubeadm-config.yaml执行初始化,–experimental-upload-certs 允许更新证书,并打印日志kubeadm-init.log
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
报错
查看系统日志
解决方法,修复这个问题,你需要通过 centos 更新 systemd:
[root@k8s-master1 ~]# yum -y upgrade systemd
[root@k8s-master1 ~]# kubeadm reset #清空初始化信息
[root@k8s-master1 ~]# kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log #重新注册
我的是root用户所有不授权
[root@k8s-master1 ~]# mkdir -p $HOME/.kube
[root@k8s-master1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
6、在其他节点上执行,并将其加入k8s集群,
[root@k8s-node1 ~]# yum -y upgrade systemd # centos 更新 systemd
[root@k8s-node1 ~]# kubeadm join 10.0.19.127:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:fa077361a006349b0bc61284b5cd846707edb8f8535ef83f904f5f5254834557
7、安装网络插件
【只在master节点执行】
两种方法
第一种,直接拉国外的
[root@k8s-master1 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
第二种,自己打包的镜像
百度网盘链接:https://pan.baidu.com/s/1euoiDihOQr75k6_BfUci2g
提取码:t1iy
[root@k8s-master1 ~]# tar xf flannel.tar.gz
[root@k8s-master1 ~]# cd flannel
[root@k8s-master1 flannel]# ls
flannel.tar kube-flannel.yml
[root@k8s-master1 flannel]# docker load -i /root/flannel/flannel.tar #不同的是所有节点都的导入镜像
[root@k8s-master1 flannel]# kubectl apply -f kube-flannel.yml #【只在master节点执行】
效果
更多推荐
所有评论(0)