简介
配置密钥免密登录
生成秘钥对
复制公钥到子节点服务器
1
| ssh-copy-id root@10.0.0.201
|
可以使用sshpass
工具以非交互式方式配置,省去了每次都要输入密码的烦恼。
然后使用:
1
| sshpass -p "123123" ssh-copy-id root@10.0.0.201
|
主子节点互通
规划主机名
序号 |
主机IP |
主机名规划 |
1 |
10.0.0.200 |
master |
2 |
10.0.0.201 |
node1 |
3 |
10.0.0.202 |
node2 |
4 |
10.0.0.203 |
node3 |
5 |
10.0.0.210 |
register |
1
| hostnamectl set-hostname master
|
配置主机名
先看一下原来的:
使用hostnamectl set-hostname
修改主节点和子节点
修改后的:
配置host解析
1
2
3
4
5
6
7
8
9
| for i in {1..3}
do
ssh root@10.1.1.20$i 'cat <<EOF >> /etc/hosts
10.1.1.200 master
10.1.1.201 node1
10.1.1.202 node2
10.1.1.203 node3
EOF'
done
|
然后使用子节点ping主节点:
1
| yum install -y yum-utils device-mapper-persistent-data lvm2
|
系统配置
永久关闭selinux
1
| sed -i 's/.*SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
|
关闭swap(所有主机操作)
临时禁用使用:swapoff -a
1
| sed -i 's/.*swap.*/#&/' /etc/fstab
|
开放防火墙
主节点机器
1
2
3
4
5
6
7
8
| sudo firewall-cmd --permanent --add-port=6443/tcp
sudo firewall-cmd --permanent --add-port=2379-2380/tcp
sudo firewall-cmd --permanent --add-port=10250/tcp
sudo firewall-cmd --permanent --add-port=10251/tcp
sudo firewall-cmd --permanent --add-port=10259/tcp
sudo firewall-cmd --permanent --add-port=10257/tcp
sudo firewall-cmd --permanent --add-port=179/tcp
sudo firewall-cmd --permanent --add-port=4789/udp
|
1
| sudo firewall-cmd --reload
|
子节点
1
2
3
4
| sudo firewall-cmd --permanent --add-port=179/tcp
sudo firewall-cmd --permanent --add-port=10250/tcp
sudo firewall-cmd --permanent --add-port=30000-32767/tcp
sudo firewall-cmd --permanent --add-port=4789/udp
|
1
| sudo firewall-cmd --reload
|
网络参数调整
配置 iptables 参数,使得流经网桥的流量也经过 iptables/netfilter 防火墙:
1
2
3
4
5
| cat >> /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
|
执行以下命令使配置生效:
1
2
3
| modprobe br_netfilter
modprobe overlay
sysctl -p /etc/sysctl.d/k8s.conf
|
安装CRI环境(所有主机操作)
CRI-O
1
2
3
4
5
6
7
8
| cat <<EOF | sudo tee /etc/yum.repos.d/cri-o.repo
[cri-o]
name=CRI-O
baseurl=https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/rpm/repodata/repomd.xml.key
EOF
|
1
| sudo dnf install cri-o -y
|
安装kubernetes(all)
1
2
3
4
5
6
7
8
| cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
|
1
2
| yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
|
初始化集群
主节点初始化
1
2
3
4
5
6
| kubeadm init --kubernetes-version=1.28.15 \
--apiserver-advertise-address=10.1.1.200 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=Swap \
--cri-socket=unix:///var/run/crio/crio.sock
|
子节点加入
1
2
3
| kubeadm join 10.1.1.200:6443 --token k20g6d.xopyi08bg9ysgb09 \
--discovery-token-ca-cert-hash sha256:8ef65a50cc9b5ad13f7c900fa70d0f95228a5b9c2f5e187bbf2137e72472d197 \
--cri-socket=unix:///var/run/cri-dockerd.sock
|
配置kubectl(master)
1
2
3
| mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
|
配置网络插件(master)
1
| wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml && kubectl apply -f kube-flannel.yml
|