3.1kubeadm集群安装
一.说明
二 . 安装软路由
三 . 集群安装
3.1 主机准备
设置系统主机名以及host文件的相互解析
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02
Vim /etc/hosts
192.168.66.10 k8s-master01
192.168.66.20 k8s-node01
192.168.66.21 k8s-node02
安装依赖包
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
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
调整内核参数, 对于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
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
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 #关闭IPV6协议
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
关闭系统不需要服务
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.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
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.189-1.el7.elrepo.x86_64) 7 (Core)'
grub2-set-default 'CentOS Linux (4.4.218-1.el7.elrepo.x86_64) 7 (Core)'
grub2-set-default 'CentOS Linux (4.4.219-1.el7.elrepo.x86_64) 7 (Core)'
查看所有可用内核
awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-set-default 'CentOS Linux (4.4.248-1.el7.elrepo.x86_64) 7 (Core)'
3.2 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
3.4 安装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
3.5 安装kubeadm(主从配置)
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://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
3.6 初始化主节点 (根据日志里面的内容做下步操作)
kubeadm config print init-defaults > kubeadm-config.yaml
#更改kubeadm-config.yaml 文件
localAPIEndpoint:
advertiseAddress: 192.168.66.10 #更改为master的ip地址
kubernetesVersion: v1.15.1 #更改版本为当前版本
networking:
podSubnet: "10.244.0.0/16" #添加flanel 网络不然后面麻烦
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
3.7 查看kubeadm-init.log 进行下步操作
3.8 加入主节点以及其余工作节点
执行安装日志中的加入命令即可
mkdir install-k8s
mv ./ install-k8s
3.9 部署网络flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube- flannel.yml
kubectl apply -f 是在原有基础上升级
kubectl create -f 是直接新建
3.10 加入其他节点
加入其他节点(在子节点执行 )(在主节点的日志文件里面找到命令):
kubeadm join 192.168.66.10:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:ed81ab06be57fa61df388ddce02b4a6d70d0e6a0be91b7b7382d8fd82970c964
四 . 配置私有仓库
1、安装docker
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install docker-ce -y
yum install python-pip -y
pip install --upgrade pip
pip install docker-compose (单机编排工具)
2、更改vim /etc/docker/daemon.json 让其信任syuee.com 这个域名
{
"exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"registry-mirrors": ["https://f4573wwn.mirror.aliyuncs.com"],
"insecure-registries": ["https://hub.syuee.com"]
}
3、创建证书
#生成私钥输入两次密码(4位以上)
openssl genrsa -des3 -out server.key 2048
#创建一个证书的请求
openssl req -new -key server.key -out server.csr
#第一个国家名:CN
#第二个省:SH
#第三个市:SH
#第四个组织:syuee
#第五个机构:syuee
#完全合规域名:hub.syuee.com
#管理员邮箱:sivan@syuee.com
#是否要改密码
#备份私钥
cp server.key server.key.org
#去掉密码
openssl rsa -in server.key.org -out server.key
#签名生成证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
mkdir /data/cert #创建/data/cert 目录 (存储ssl的目录)
chmod -R 777 /data/cert
4、上传harbor并解压
tar xf harbor-offline-installer-v1.2.0.tgz
mv harbor /usr/local/
更改配置文件vim /usr/local/harbor/harbor.cfg
更改hostname
hostname = hub.syuee.com
更改访问为https
ui_url_protocol = https
默认证书的位置是
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
安装harbor
./install.sh
5、其他配置
配置hosts 解析
C:\Windows\System32\drivers\etc 的hosts
默认账号密码是
admin\Harbor12345
6、更改其他docker 指定仓库
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"insecure-registries": ["https://hub.syuee.com"]
}
7、验证
登录
docker login https://hub.syuee.com
admin/Harbor12345
下载一个镜像
docker pull nginx
重新打标签
docker tag nginx:latest hub.syuee.com/library/nginx:v1
推送到仓库
docker push hub.syuee.com/library/nginx:v1
hub.syuee.com/library/ingress-nginx-controller:v0.44.0