kubernetes组件
kube-apiserver API服务器,公开了KubernetersAPI
etcd 减值数据库,可以作为保存,Kubernetes所有集群数据的后台数据库,
kube-scheduler调度pod到那个节点去运行,
kube-controller集群控制器,
cloud-controller 与云服务商,交互。
PVE上搭建kubernetes 1.22版本,搭建前需要做好快照。
裸机安装,
k8s 1.22.4版本, 1.24以后不支持docker 需要用podman安装插件
3台虚拟机,
192.168.31.137 k8s-master01
192.168.31.138 k8s-node1
192.168.31.139 k8s-node2
在每个节点创建文件/run/flannel/subnet.env写入以下内容,配置后等待一会就好了
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
在31.137上操作
hostnamectl set-hostname k8s-master01
vim /etc/hosts
192.168.31.137 k8s-master01
192.168.31.138 k8s-node1
192.168.31.139 k8s-node2
# 所有节点关闭 SELinux
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭swap 修改文件重启后会生效
swapoff -a
#sed -i '/swap/s/^/#/' /etc/fstab
#root@hhdcloudrd7 /]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Apr 19 11:43:17 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos_hhdcloudrd6-root / xfs defaults 0 0
UUID=13a8fe45-33c8-4258-a434-133ce183d3c3 /boot xfs defaults 0 0
#(把下面一行注释掉
#/dev/mapper/centos_hhdcloudrd6-swap swap swap defaults 0 0
# 添加 k8s 安装源
cat <<EOF > kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
mv kubernetes.repo /etc/yum.repos.d/
# 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装所需组件(所有节点
yum install -y kubelet-1.22.4 kubectl-1.22.4 kubeadm-1.22.4 docker-ce
设置开机启动
systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker# kubernetes 官方推荐 docker 等使用 systemd 作为 cgroupdriver,否则 kubelet 启动不了
cat <<EOF > daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://zk58d2fs.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/
重启生效
systemctl daemon-reload
systemctl restart docker
# 初始化集群控制台 Control plane
# 失败了可以用 kubeadm reset 重置
kubeadm init --image-repository=registry.aliyuncs.com/google_containers
==========================================================================
# 记得把 kubeadm join xxx 保存起来
# 忘记了重新获取:kubeadm token create --print-join-command
# 复制授权文件,以便 kubectl 可以有权限访问集群
# 如果你其他节点需要访问集群,需要从主节点复制这个文件过去其他节点
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
# 在其他机器上创建 ~/.kube/config 文件也能通过 kubectl 访问到集群
=================================================================
kubeadm join 192.168.31.137:6443 --token h6q1sx.s8ctu4ulos5ymi96 \
--discovery-token-ca-cert-hash sha256:5174edc3a891c33d2b136d2a9940ac6d23443f71ff43bf50417f8ef359087738
[root@k8s-master01 ~]# mkdir -p $HOME/.kube
[root@k8s-master01 ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master01 ~]# chown $(id -u):$(id -g) $HOME/.kube/config
[root@k8s-master01 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master01 NotReady control-plane,master 25m v1.22.4
k8s-node1 NotReady <none> 7m20s v1.22.4
k8s-node2 NotReady <none> 7m36s v1.22.4
[root@k8s-master01 ~]#
在Node1. 31.138上操作
hostnamectl set-hostname k8s-node1
vim /etc/hosts
192.168.31.137 k8s-master01
192.168.31.138 k8s-node1
192.168.31.139 k8s-node2
# 所有节点关闭 SELinux
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
#关闭swap 修改文件重启后会生效
swapoff -a
#sed -i '/swap/s/^/#/' /etc/fstab
#root@hhdcloudrd7 /]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Apr 19 11:43:17 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos_hhdcloudrd6-root / xfs defaults 0 0
UUID=13a8fe45-33c8-4258-a434-133ce183d3c3 /boot xfs defaults 0 0
#(把下面一行注释掉
#/dev/mapper/centos_hhdcloudrd6-swap swap swap defaults 0 0
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 添加 k8s 安装源
cat <<EOF > kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
mv kubernetes.repo /etc/yum.repos.d/
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#不安装依赖包会报错
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#-bash: yum-config-manager: command not found
设置开机启动
systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker
# kubernetes 官方推荐 docker 等使用 systemd 作为 cgroupdriver,否则 kubelet 启动不了
cat <<EOF > daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://zk58d2fs.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/
重启生效
systemctl daemon-reload
systemctl restart docker
#讲节点加入主节点
kubeadm join 172.16.32.10:6443 --token xxx --discovery-token-ca-cert-hash xxx
在node 2 31.139上操作
hostnamectl set-hostname k8s-node2
vim /etc/hosts
192.168.31.137 k8s-master01
192.168.31.138 k8s-node1
192.168.31.139 k8s-node2
# 所有节点关闭 SELinux
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
#关闭swap 修改文件重启后会生效
swapoff -a
#sed -i '/swap/s/^/#/' /etc/fstab
#root@hhdcloudrd7 /]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Apr 19 11:43:17 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos_hhdcloudrd6-root / xfs defaults 0 0
UUID=13a8fe45-33c8-4258-a434-133ce183d3c3 /boot xfs defaults 0 0
#(把下面一行注释掉
#/dev/mapper/centos_hhdcloudrd6-swap swap swap defaults 0 0
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 添加 k8s 安装源
cat <<EOF > kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
mv kubernetes.repo /etc/yum.repos.d/
# 安装依赖 包
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
设置开机启动
systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker
# kubernetes 官方推荐 docker 等使用 systemd 作为 cgroupdriver,否则 kubelet 启动不了
cat <<EOF > daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://zk58d2fs.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/
重启生效
systemctl daemon-reload
systemctl restart docker