kubeadm-ubuntu
· 阅读需 13 分钟
主机规划
主机IP | 主机名称 | 配置 |
---|---|---|
172.16.10.81 | k8s-master01 | Ubuntu 20.04.1 LTS,2核CPU,8G内存,40G系统盘 |
172.16.10.82 | k8s-master02 | Ubuntu 20.04.1 LTS,2核CPU,8G内存,40G系统盘 |
172.16.10.83 | k8s-master03 | Ubuntu 20.04.1 LTS,2核CPU,8G内存,40G系统盘 |
172.16.10.84 | k8s-node01 | Ubuntu 20.04.1 LTS,2核CPU,8G内存,40G系统盘 |
安装基础软件包,各个节点操作
# 更新apt 包索引
apt-get update
# 安装软件包以允许apt通过HTTPS使用存储库
apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common \
ntpdate
环境操作(所有节点)
- 关闭swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
- 关闭防火墙
ufw disable
- 配置时间时区语言
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile
source /etc/profile
- 配置内核参数让iptables对bridge的数据进行控制
cat >> /etc/sysctl.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.all.forwarding = 1
net.ipv4.ip_forward= 1
fs.aio-max-nr = 1048576
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_max_syn_backlog = 8096
EOF
sysctl -p
- 添加/etc/hosts
172.16.10.81 k8s-master01
172.16.10.82 k8s-master02
172.16.10.83 k8s-master03
172.16.10.84 k8s-node01
- 时间同步
ntpdate cn.pool.ntp.org
- 编辑计划任务,每小时做一次同步
crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
- 开启ipvs,不开启ipvs将会使用iptables,但是效率低,所以官网推荐需要开通ipvs内核
#查看是否加载了ipvs模块
lsmod|grep ip_vs
#若未开启,使用以下命令加载
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
- ssh允许root用户登录
vi /etc/ssh/sshd_config
PermitRootLogin yes
systemctl restart sshd
- 配置免密登录
# 在master01操作
ssh-keygen -t rsa
ssh-copy-id root@k8s-master01
ssh-copy-id root@k8s-master02
ssh-copy-id root@k8s-master03
安装docker(所有节点)
# 添加Docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88
# 安装add-apt-repository工具
apt-get -y install software-properties-common
# 添加稳定的存储库
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 更新apt包索引
apt-get update
# 查看Docker版本
apt-cache madison docker-ce
# 安装Docker
apt-get -y install docker-ce=5:19.03.12~3-0~ubuntu-focal docker-ce-cli=5:19.03.12~3-0~ubuntu-focal containerd.io
# 查看Docker信息
docker info
# 解决问题:WARNING: No swap limit support(操作系统下docker不支持内存限制的警告)
在基于RPM的系统上不会发生此警告,该系统默认情况下启用这些功能。
vi /etc/default/grub 添加或编辑GRUB_CMDLINE_LINUX行以添加这两个键值对"cgroup_enable=memory swapaccount=1",
最终效果:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1 net.ifnames=0 vga=792 console=tty0 console=ttyS0,115200n8 noibrs"
### 执行命令更新grub并重启机器
update-grub
reboot
# 修改docker配置文件,配置镜像加速器
cat > /etc/docker/daemon.json << EOF
{
"oom-score-adjust": -1000,
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"max-concurrent-downloads": 10,
"insecure-registries": ["0.0.0.0/0"],
"max-concurrent-uploads": 10,
"registry-mirrors": ["https://dockerhub.azk8s.cn"],
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
安装kubernetes1.17.3高可用集群
安装kubeadm,kubelet,kubectl(所有节点)
#下载 gpg 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
#添加 k8s 镜像源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
# 更新apt包索引
sudo apt-get update
# 查看kubeadm版本
apt-cache madison kubeadm
#安装对应kubeadm,kubelet,kubectl版本
sudo apt-get install -y kubelet=1.17.3-00 kubeadm=1.17.3-00 kubectl=1.17.3-00
#查看kubeadm版本
kubeadm version
kubeadm命令详解
kubeadm config upload from-file:由配置文件上传到集群中生成ConfigMap。
kubeadm config upload from-flags:由配置参数生成ConfigMap。
kubeadm config view:查看当前集群中的配置值。
kubeadm config print init-defaults:输出kubeadm init默认参数文件的内容。
kubeadm config print join-defaults:输出kubeadm join默认参数文件的内容。
kubeadm config migrate:在新旧版本之间进行配置转换。
kubeadm config images list:列出所需的镜像列表。
kubeadm config images pull:拉取镜像到本地。
kubeadm reset :卸载服务
搭建haproxy+keepalived高可用集群
安装keepalived(master节点)
-> k8s-master01
sudo apt-get install keepalived -y
#编辑Keepalived配置文件
vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass just0kk
}
virtual_ipaddress {
192.168.10.88 #VIP地址
}
}
systemctl start keepalived && systemctl enable keepalived
-> k8s-master02
sudo apt-get install keepalived -y
#编辑Keepalived配置文件
vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 80
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass just0kk
}
virtual_ipaddress {
192.168.10.88 #VIP地址
}
}
systemctl start keepalived && systemctl enable keepalived
-> k8s-master03
sudo apt-get install keepalived -y
#编辑Keepalived配置文件
vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 80
priority 30
advert_int 1
authentication {
auth_type PASS
auth_pass just0kk
}
virtual_ipaddress {
192.168.10.88 #VIP地址
}
}
systemctl start keepalived && systemctl enable keepalived