【完整版Kubernetes(K8S)入门系列四】Centos7 使用Kubeadm 搭建集群环境
所有服务器按步骤执行下列脚本Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
1.安装环境
操作系统:Centos7
Docker: 20+
K8s: 1.23.6
三台服务器(虚拟机):
角色 | IP |
k8smaster | 192.168.43.129 |
k8snode130 | 192.168.43.130 |
k8snode131 | 192.168.43.131 |
2.初始工作
所有服务器按步骤执行下列脚本
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.43.129 k8smaster
192.168.43.130 k8snode130
192.168.43.131 k8snode131
EOF
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
3. 所有节点安装Docker、kubeadm、kubelet
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
3.1 安装Docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker
3.2配置Docker镜像加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://z20d161c.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.3 添加阿里云YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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
3.4 安装kubeadm,kubelet和kubectl
由于版本更新频繁,这里指定版本号部署:
yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
systemctl enable kubelet
4.初始化Master节点
4.1 在Master上执行初始化脚本。
$ kubeadm init \
--apiserver-advertise-address=192.168.43.129 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
其中,初始化过程中可能出现问题
问题:failed to create sandbox for pod :拉取 registry.k8s.io/pause:3.6 镜像失败 journalctl -xeu kubelet查看的日志报错信息
Failed to create sandbox for pod” err="rpc error: code = Unknown desc = failed to get sandbox image “ registry.k8s.io/pause:3.6”: failed to pull image “ registry.k8s.io/pause:3.6 问题
拉取 registry.k8s.io/pause:3.6 镜像失败 导致sandbox 创建不了而报错
解决:重新配置 sandbox 镜像 仓库,将默认的 registry.k8s.io/pause:3.6 修改成 “ registry.aliyuncs.com/google_containers/pause:3.6”
步骤1. 生成 containerd 的默认配置文件
containerd config default > /etc/containerd/config.toml
步骤2. 通过vi修改生成的配置文件
步骤3. 重启containerd
systemctl daemon-reload
systemctl restart containerd.service
重启后,可以拉去镜像了。
4.2 初始化成功后,执行以下脚本
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5.加入节点node1,node2
初始化master节点后,不要清屏,复制初始化成功后输出的结果
将复制的脚本在node1,node2服务器上执行
kubeadm join 192.168.43.129:6443 --token l80tk9.2hdts2uwxgeqh1ym \
--discovery-token-ca-cert-hash sha256:bc10f13f52fdace4aa09d5530f3473cf733457d3ccab2c4a8ceaca5724f40d74
默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:
kubeadm token create --print-join-command
6. 部署CNI网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
使用vi修改kube-flannel.yml配置文件中的docker.io镜像地址
执行指令:
kubectl apply -f kube-flannel.yml
查看是否配置成功
kubectl get pods -n kube-system
Running则表示配置成功
7.测试集群是否部署成功
在Kubernetes集群中创建一个pod,验证是否正常运行:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
浏览器访问192.168.43.131:31941 、192.168.43.130:31941 、192.168.43.129:31941查看效果
8. 在任意节点Node中使用kubectl
完成以上7个步骤后,还存在一个问题,节点服务器中无法使用kubectl命令行,按要求可以配置节点Node也可以使用kubectl命令行
解决:
步骤1. 将master 节点中/etc/kubernetes/admin.conf 配置文件拷贝到需要运行的Node服务器的/etc/kubernetes目录中
scp /etc/kubernetes/admin.conf root@192.168.43.130:/etc/kubernetes
步骤2. 在对应的节点服务器上配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
测试,是否可以使用kubectl
至此,集群部署成功啦!
更多推荐
所有评论(0)