查看Linux发行版版本号
cat /etc/redhat-release
查看版本号。
更改yum源
参考我写的博客。
主节点操作系统参数配置和软件安装
cat >> /etc/hosts <<OFF
,将你的两台云服务器的内网IP和对应的主机名写到/etc/hosts
。
需要修改“/etc/fstab”,关闭 Linux 的 swap 分区
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
禁用 SELinux
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
使用cat >>/etc/sysctl.d/k8s.conf<< OFF
创建k8s.conf文件,这是ipV4和ip V6进行转发的设置,输入下边的内容,每输入一行按一下回车键,最后输入“OFF”:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
执行如下命令使修改生效:
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
加载 ipvs 模块
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
lsmod是list modules的缩写,即列出所有模块。可以使用下边的命令:
lsmod | grep ip_vs
lsmod | grep nf_conntrack_ipv4
查看一下情况。
yum install -y ipvsadm ipset
安装ipvsadm和ipset。
主节点安装Docker
yum install -y yum-utils device-mapper-persistent-data lvm2
安装必要的软件。
设置 stable 镜像 aliyun 仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
更新 yum 软件包索引
yum list docker-ce.x86_64 --showduplicates |sort -r
从高到低列出 Docker-ce 的版本
yum install docker-ce-20.10.8 docker-ce-cli-20.10.8 containerd.io-1.4.10 -y –-allowerasing
安装Docker 20.10.8和containerd。
最后显示“Complete!”就是安装完成。
systemctl start docker
启动docker。
systemctl status docker
看一下docker状态。
systemctl enable docker --now
设置开机启动docker并且现在启动docker。
设置 Docker 镜像加速器,修改 docker 配置以适应 kubelet
vim /etc/docker/daemon.json
,把下边的内容添加进去:
{
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
重新加载服务的配置文件。
systemctl restart docker
重新启动docker。
主节点安装kubeadm、kubelet、kubectl
添加软件源信息,可以参考https://developer.aliyun.com/mirror/kubernetes。
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 makecache fast
更新 yum 软件包索引。
yum list kubeadm --showduplicates |sort -r
把kubeadm版本展示出来。
yum install kubeadm-1.23.3 kubelet-1.23.3 kubectl-1.23.3 -y
使用版本限制安装kubeadm、kubelet、kubectl。
最后显示“Complete!”安装完成。
kubectl version
显示版本。
systemctl daemon-reload
重新加载服务的配置文件。
systemctl start kubelet.service
重新启动kubelet服务。
systemctl status kubelet.service
查看一下kubelet服务状态。
发现没有启动,journalctl -u kubelet --no-pager
查看日志查找原因
发现报错如下:
Failed to load kubelet config file" err="failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file \"/var/lib/kubelet/config.yaml\", error: open /var/lib/kubelet/config.yaml: no such file or directory" path="/var/lib/kubelet/config.yaml
ifconfig
看一下当前网卡信息,我下边会选择172.31.0.180这个网卡。
pod-network-cidr:设置集群里 Pod 的 IP 地址段。
apiserver-advertise-address:设置 apiserver 的 IP 地址,对于多网卡服务器来说很重要(比如 VirtualBox 虚拟机就用了两块网卡),可以指定 apiserver 在哪个网卡上对外提供服务。
kubernetes-version:指定 Kubernetes 的版本号。
image-repository:用来设置镜像。
service-cid:设置k8s的service的虚拟ip网段
接下来使用kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.23.3 --pod-network-cidr=10.10.0.0/16 --service-cidr=10.20.0.0/16 --apiserver-advertise-address=172.31.0.180
启动。
显示kubeadm join
开头的字符串就是执行成功了。
systemctl start kubelet.service
再次重新启动kubelet服务,systemctl status kubelet.service
查看一下kubelet服务状态,发现启动成功了。
mkdir -p $HOME/.kube # 新建目录
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # 将admin.conf拷贝成config
sudo chown $(id -u):$(id -g) $HOME/.kube/config # 添加用户组
kubectl get pod -A
查看所有的pod。
发现有Pending状态的pod,一会之后,再执行kubectl get pod -A
查看所有的pod,发现状态已经变为Running。
kubectl get node
看一下节点信息。
打开安全组
在天翼云服务器安全组中,把6443、10250、10251、10252和10259这几个端口出入方向都打开。需要开放的端口参考网址:https://blog.csdn.net/lkmtao/article/details/129674996
点击“安全组”。
点击“>”。
点击“添加规则”。
选择方向,填写端口,最后点击确定。
主节点安装网络组件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
下载kube-flannel.yml。
vim /root/kube-flannel.yml
,将Network的值改为“10.10.0.0/16”。
kubectl apply -f kube-flannel.yml
部署flannel。
从节点操作系统参数配置和软件安装
cat >> /etc/hosts <<OFF
,将你的两台云服务器的内网IP和对应的主机名写到/etc/hosts
。
需要修改“/etc/fstab”,关闭 Linux 的 swap 分区
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
禁用 SELinux
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
使用cat >>/etc/sysctl.d/k8s.conf<< OFF
创建k8s.conf文件,这是ipV4和ip V6进行转发的设置,输入下边的内容,每输入一行按一下回车键,最后输入“OFF”:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
执行如下命令使修改生效:
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
加载 ipvs 模块
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
lsmod是list modules的缩写,即列出所有模块。可以使用下边的命令:
lsmod | grep ip_vs
lsmod | grep nf_conntrack_ipv4
查看一下情况。
yum install -y ipvsadm ipset
安装ipvsadm和ipset。
从节点安装Docker
参考我写的博客更改yum源。
yum install -y yum-utils device-mapper-persistent-data lvm2
安装必要的软件。
设置 stable 镜像 aliyun 仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
更新 yum 软件包索引
yum install docker-ce-20.10.8 docker-ce-cli-20.10.8 containerd.io-1.4.10 -y –-allowerasing
安装Docker 20.10.8和containerd。
最后显示“Complete!”就是安装完成。
systemctl start docker
启动docker。
systemctl status docker
看一下docker状态。
systemctl enable docker --now
设置开机启动docker并且现在启动docker。
设置 Docker 镜像加速器,修改 docker 配置以适应 kubelet
vim /etc/docker/daemon.json
,把下边的内容添加进去:
{
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
重新加载服务的配置文件。
systemctl restart docker
重新启动docker。
systemctl status docker
看一下状态。
从节点安装kubeadm、kubelet、kubectl
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 makecache fast
更新 yum 软件包索引。
yum install kubeadm-1.23.3 kubelet-1.23.3 kubectl-1.23.3 -y
使用版本限制安装kubeadm、kubelet、kubectl。
最后显示“Complete!”安装完成。
从节点连接主节点
kubeadm join 172.31.0.180:6443 --token 5wrhsh.y7wduklce0cmhqux --discovery-token-ca-cert-hash sha256:06cf619fce6daf2adab2186cb8914a678153aac9769e98a6c3e8c8fdedcb1949
在主节点上使用kubectl get nodes
测试一下,若是显示两个节点,而STATUS都是Ready,那么就是好了。