前言



前几篇已经部署好环境,接着就可用正式部署k8s了



kubeadm初始化集群



可使用命令直接初始化,也可使用配置文件
当使用文件初始化时,需要确保配置的正确性

1~2仅在master1上执行即可



<1>创建kubeadm配置文件

cat >kubeadm-config.yaml <<EOF
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.17.3
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
etcd:
    external:
        endpoints:
        - https://192.168.1.1:2379
        - https://192.168.1.2:2379
        - https://192.168.1.3:2379
        caFile: /etc/kubernetes/pki/etcd/ca.pem
        certFile: /etc/kubernetes/pki/etcd/etcd.pem
        keyFile: /etc/kubernetes/pki/etcd/etcd-key.pem
networking:
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
apiServer:
  certSANs:
    - "cluster.kube.com"
controlPlaneEndpoint: "cluster.kube.com:16443"
EOF


部分参数介绍:
imageRepository       #配置镜像下载地址,此处使用阿里云的镜像
podSubnet             #pod网段  Calico或flannel网络插件中的配置的网段需与此网段相同,否则会导致网络问题
serviceSubnet         #service网络,pod网段和service网段,不可冲突,尽量避免与当前其他网段冲突
controlPlaneEndpoint  #配置集群  此处master使用SLB+haproxy做了负载均衡,配置hosts域名解析到了SLB  SLB有异常或关闭时,hosts域名对应ip可手动配置为对应haproxy节点ip




<2>初始化

kubeadm init --config=kubeadm-config.yaml


<3>补充
如何根据配置文件,列出和拉取镜像

kubeadm config images list --config kubeadm-config.yaml
kubeadm config images pull --config kubeadm-config.yaml

如果使用命令创建集群,示例:

kubeadm init  --kubernetes-version=v1.17.3 --pod-network-cidr=10.244.0.0/16  --service-cidr=10.96.0.0/12  --ignore-preflight-errors=Swap 

--pod-network-cidr  k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr一样  =podSubnet
--service-cidr      service网络,pod网段和service网段,不可冲突,尽量避免与当前其他网段冲突   =serviceSubnet


<4>添加节点

由于是在master1上执行,在其他各节点执行下图中的kubeadm join命令,即为当前集群加入节点
第一个是添加master,第二个是添加node

在这里插入图片描述

补充:
注意token是有期限的,token过期不会影响集群。token过期后,无法使用旧token加入集群,需重新生成token

#重新生成token
kubeadm token create    
#列出token
kubeadm token list  | awk -F" " '{print $1}' |tail -n 1
#获取CA公钥的哈希值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^ .* //'


<4>先将证书拷贝到其他master节点,其他master再执行kubeadm join,加入集群

rsync -aP  /etc/kubernetes/pki/  root@k8s-master02:/etc/kubernetes/pki/
rsync -aP  /etc/kubernetes/pki/  root@k8s-master03:/etc/kubernetes/pki/


<5>认证linux用户操作权限
(在各master节点执行)

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

node节点仅需执行kubeadm join即可



<6>在各master节点,查看节点状态

查看节点
kubectl get node

查看集群状态
kubectl get cs

NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-1               Healthy   {"health":"true"}   
etcd-2               Healthy   {"health":"true"}   
etcd-0               Healthy   {"health":"true"}   

各节点显示ok,无报错即为成功

解除非安全端口导致的报错:
https://moxiao.blog.csdn.net/article/details/115730831

动态查看 kube-system 命名空间下的pod
kubectl get pod -n kube-system -o wide -w

查看当前集群的配置内容
kubeadm config view


Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐