1 初始化服务器配置

本文详细介绍如何在三台机器上部署Kubernetes集群,包括设置hostname、hosts文件,配置环境变量,安装依赖包,关闭防火墙及SELinux,以及系统内核参数优化等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用三台机器进行部署 IP分别为
172.17.13.204
172.17.13.205
172.17.13.202

2.三台机器分别设置,注意一定要每台机器都配置
a.设置hostname
vim /etc/hostname 分别设置hostname

sudo hostnamectl set-hostname kube-node1
sudo hostnamectl set-hostname kube-node2
sudo hostnamectl set-hostname kube-node3

b.设置hosts
vim /etc/hosts

172.17.13.204 kube-node1
172.17.13.205 kube-node2
172.17.13.202 kube-node3

注:vim shift+g最后一行 shift+0最后一个字母

c.为了减少用户切换、授权操作,全部使用root用户操作
如果需要需要定义用户,可以参考下面定义k8s用户,后续操作都用定义的用户操作

sudo useradd -m k8s
sudo sh -c 'echo 123456 | passwd k8s --stdin' # 为 k8s 账户设置密码
sudo gpasswd -a k8s wheel
sudo useradd -m docker
sudo gpasswd -a k8s docker

d.每台机器配置环境变量
vim /etc/profile

# 生成 EncryptionConfig 所需的加密 key
ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)

# 最好使用 当前未用的网段 来定义服务网段和 Pod 网段

# 服务网段,部署前路由不可达,部署后集群内路由可达(kube-proxy 和 ipvs 保证)
SERVICE_CIDR="10.254.0.0/16"

# Pod 网段,建议 /16 段地址,部署前路由不可达,部署后集群内路由可达(flanneld 保证)
CLUSTER_CIDR="172.30.0.0/16"

# 服务端口范围 (NodePort Range)
export NODE_PORT_RANGE="8400-9000"

# 集群各机器 IP 数组
export NODE_IPS=(172.17.13.204 172.17.13.205 172.17.13.202)

# 集群各 IP 对应的 主机名数组
export NODE_NAMES=(kube-node1 kube-node2 kube-node3)

# kube-apiserver 的 VIP(HA 组件 keepalived 发布的 IP)
export MASTER_VIP=172.17.13.253

# kube-apiserver VIP 地址(HA 组件 haproxy 监听 8443 端口)
# export KUBE_APISERVER="https://${MASTER_VIP}:8443"
# 由于阿里云ECS不支持浮动IP havip也已经下线 暂不使用keepalived 和 haproxy做高可用负载 使用阿里负载均衡
export KUBE_APISERVER="https://172.17.13.204:6443"

# HA 节点,VIP 所在的网络接口名称
export VIP_IF="eth0"

# etcd 集群服务地址列表
export ETCD_ENDPOINTS="https://172.17.13.204:2379,https://172.17.13.205:2379,https://172.17.13.202:2379"

# etcd 集群间通信的 IP 和端口
export ETCD_NODES="kube-node1=https://172.17.13.204:2380,kube-node2=https://172.17.13.205:2380,kube-node3=https://172.17.13.202:2380"

# flanneld 网络配置前缀
export FLANNEL_ETCD_PREFIX="/kubernetes/network"

# kubernetes 服务 IP (一般是 SERVICE_CIDR 中第一个IP)
export CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"

# 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)
export CLUSTER_DNS_SVC_IP="10.254.0.2"

# 集群 DNS 域名
export CLUSTER_DNS_DOMAIN="cluster.local."

# 将二进制目录 /opt/k8s/bin 加到 PATH 中
export PATH=/opt/k8s/bin:$PATH

source /etc/profile

e.添加docker帐号,并配置daemon.json

sudo useradd -m docker
sudo gpasswd -a k8s docker
sudo mkdir -p  /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": ["https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"],
    "max-concurrent-downloads": 20
}
EOF

f.设置ssh密码,自动登录
ssh-keygen -t rsa 直接回车
[k8s@kube-node1 k8s]$ ssh-keygen -t rsa
输入各个主机root用户密码

[k8s@kube-node1 k8s]$ ssh-copy-id root@kube-node1
[k8s@kube-node1 k8s]$ ssh-copy-id root@kube-node2
[k8s@kube-node1 k8s]$ ssh-copy-id root@kube-node3

输入刚创建的k8s用户密码

[k8s@kube-node1 k8s]$ ssh-copy-id k8s@kube-node1
[k8s@kube-node1 k8s]$ ssh-copy-id k8s@kube-node2
[k8s@kube-node1 k8s]$ ssh-copy-id k8s@kube-node3

g.在每台机器上安装依赖包

sudo yum install -y epel-release
sudo yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

h.关闭防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo iptables -F && sudo iptables -X && sudo iptables -F -t nat && sudo iptables -X -t nat
sudo sudo iptables -P FORWARD ACCEPT

i.关闭 swap 分区
如果开启了 swap 分区,kubelet 会启动失败(可以通过将参数 --fail-swap-on 设置为 false 来忽略 swap on),故需要在每台机器上关闭 swap 分区:

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

j.确认关闭SELinux

sudo setenforce 0
grep SELINUX /etc/selinux/config

k.确认关闭dnsmasq

sudo service dnsmasq stop
sudo systemctl disable dnsmasq

l.创建文件 kubernetes.conf

cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
EOF

拷贝并执行命令

sudo mv kubernetes.conf  /etc/sysctl.d/kubernetes.conf
sudo sysctl -p /etc/sysctl.d/kubernetes.conf
sudo mount -t cgroup -o cpu,cpuacct none /sys/fs/cgroup/cpu,cpuacct

m.加载内核模块

sudo modprobe br_netfilter
sudo modprobe ip_vs

n.设置系统时区

# 调整系统 TimeZone
# 将当前的 UTC 时间写入硬件时钟
# 重启依赖于系统时间的服务
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-local-rtc 0
sudo systemctl restart crond

o.创建目录

sudo mkdir -p /opt/k8s/bin
sudo mkdir -p /etc/kubernetes/cert
sudo mkdir -p /etc/etcd/cert
sudo mkdir -p /var/lib/etcd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值