Kubernetes从入门到精通 集群安装

kubernetes集群安装

一 准备集群镜像
从阿里云镜像仓库拉镜像 标签改名
# 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看
[root@master ~]# kubeadm config images list

# 下载镜像
# 此镜像kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替换方案
images=(
    kube-apiserver:v1.17.4
    kube-controller-manager:v1.17.4
    kube-scheduler:v1.17.4
    kube-proxy:v1.17.4
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)

for imageName in ${images[@]};do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName 
done

二 集群初始化

1 下面的操作只需要在master节点上执行即可
# 创建集群
[root@master ~]# kubeadm init \
    --apiserver-advertise-address=192.168.117.100 \
    --kubernetes-version=v1.17.4 \
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16
# 创建必要文件
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubernetes-version k8s 版本

pod-network-cidr pod网络

service-cidr service网络

apiserver-advertise-address master节点的ip地址

2 node节点上执行
kubeadm join 192.168.117.100:6443 --token ijk3en.o8u3d1omlyh8oxao     --discovery-token-ca-cert-hash sha256:e6b0e0e3585fd9d36a3f7df681626792e52ead98530a93f96a3979a308c92a15

注意上面的命令是在master节点上 kubeadm 初始完成打印出来的!!!!

3 在master上查看节点信息
[root@master ~]# kubectl get nodes
NAME    STATUS   ROLES     AGE   VERSION
master  NotReady  master   6m    v1.17.4
node1   NotReady   <none>  22s   v1.17.4
node2   NotReady   <none>  19s   v1.17.4

三 网络插件安装

kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择flannel

1 安装网络插件,只在master节点操作即可

1) 安装kube-flannel.yml我这里采用的是kx上网的方式直接安装 当然也可以去网上直接下
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

2) 修改kube-flannel.yml里面的镜像源为国内镜像源
vi /root/kube-flannel.yml
#将xxx.io 替换为quay.mirror.qiniu.com 如下图所示

3) 使用配置文件启动fannel
kubectl apply -f kube-flannel.yml
4) 稍等片刻,再次查看集群节点的状态
kubectl get nodes

 

如果如下图所示有NotReady 很明显有问题

5) NotReady问题解决
a 用以下语句查看原因
 journalctl -f -u kubelet.service

若原因是: cni.go:237] Unable to update cni config: no networks found in /etc/cni/net.d

#创建目录给flannel做配置文件
mkdir -p /etc/cni/net.d
#编写配置文件
vim /etc/cni/net.d/10-flannel.conf

输入

{
 "name":"cbr0",
 "cniVersion":"0.3.1",
 "type":"flannel",
 "deledate":{
    "hairpinMode":true,
    "isDefaultGateway":true
  }

}
b 使用kubeadm reset重置集群 在master节点之外的节点进行操作!!!!!
#在master节点之外的节点进行操作
kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
##重启kubelet
systemctl restart kubelet
##重启docker
systemctl restart docker
c 重启kubelet和docker
# 重启kubelet
systemctl restart kubelet
# 重启docker
systemctl restart docker

使用配置文件启动fannel

kubectl apply -f kube-flannel.yml

 

注意以上解决方案,我没有亲测过,来源于网络。

究极解决方案还是,建议 kx上网,不用国内的镜像源,一路绿灯

 

 

2 常用命令

kubectl apply -f kube-flannel.yml
kubectl get pods -n kube-system -o wide

 

 

 

posted @ 2023-04-30 11:16  KwFruit  阅读(55)  评论(0编辑  收藏  举报