searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

部署一套自己本地的K8S集群(下)

2023-07-10 08:28:08
36
0

1. 检查工作(所有节点)

检查kubelet、crictl、containerd运行状态是否正常

 

2. 部署动作(master节点)

此时,kubelet和containerd应该处于正常运行状态,只不过内部会因为K8S核心组件未部署,会有一些报错日志

2.1. 生成证书(部署K8S时不用做,只是后续证书失效后才需要)

sudo kubeadm init phase kubelet-start

sudo kubeadm init phase certs all

cd /etc/kubernetes/

mkdir backup

mv admin.conf controller-manager.conf kubelet.conf scheduler.conf backup

kubeadm init phase kubeconfig all

2.2. 生成kubeadm部署的相关配置

生成kubeadm的默认配置

kubeadm config print init-defaults >  kubeadm-config.yaml

 

修改 kubeadm-config.yaml的内容(重点关注标红部分,没有就新增,有就修改)

apiVersion: kubeadm.k8s.io/v1beta3

bootstrapTokens:

- groups:

  - system:bootstrappers:kubeadm:default-node-token

  token: abcdef.0123456789abcdef

  ttl: 24h0m0s

  usages:

  - signing

  - authentication

kind: InitConfiguration

localAPIEndpoint:

  advertiseAddress: 10.0.0.24

  bindPort: 6443

nodeRegistration:

  criSocket: unix:///var/run/containerd/containerd.sock

  imagePullPolicy: IfNotPresent

  name: csitest-centos8-0001

  taints: null

---

apiServer:

  timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta3

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns: {}

etcd:

  local:

    dataDir: /var/lib/etcd

imageRepository: registry.aliyuncs.com/google_containers

kind: ClusterConfiguration

kubernetesVersion: 1.25.5

networking:

  dnsDomain: cluster.local

  serviceSubnet: 10.96.0.0/12

  podSubnet: 10.244.0.0/16

scheduler: {}

 

其中:

advertiseAddress: 10.0.0.24为你master节点与其他节点通信的地址。

criSocket: unix:///var/run/containerd/containerd.sock为containerd配置的对外提供服务的sock地址

name: csitest-centos8-0001为主master节点的hostname

imageRepository: registry.aliyuncs.com/google_containers表示你拉取镜像的地址前缀,一般国内都用阿里的

kubernetesVersion: 1.25.5表示K8S版本号

podSubnet: 10.244.0.0/16一般在yaml都不会自带,所以需要你添加,因为我常用flannel网络插件,所以用flannel的这个默认地址。

2.3. 镜像拉取

先用kubeadm config images list --config kubeadm-config.yaml命令,查看拉取的镜像是否跟你要的一致。

你确定好没问题以后,执行命令正式拉取:

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

确定镜像拉取完后,再进行下一步。

注意:这里拉取的pause的镜像地址,需要与之前“构建containerd配置”这一节的pause地址保持一致

2.4. 部署master节点

执行命令进行master的部署:

kubeadm init --config kubeadm-config.yaml

 

执行成功后,将配置提供给kubectl使用(kubectl命令执行的时候会自动去~/.kube目录下读取config文件用于和apiserver通信):

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

记录node节点的加入口令:

kubeadm token create --print-join-command

例如会返回如下结果:

kubeadm join 10.0.0.24:6443 --token j5f6gk.ngt79gdeg3sxnr3q --discovery-token-ca-cert-hash sha256:db7de7cf051863b87337d091d6a532a7affaf5ac2b61102c519bdd14de916de0

这样其他node节点需要加入K8S集群,就需要用到这段kubeadm join的语句了。

3. CNI网络配置(master节点)

下载yaml:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

部署flannel:

kubectl apply -f kube-flannel.yml

 

注意:

  • 如果下载flannel镜像较慢或者无公网,则自行下载后,再导入。Yaml也是同理。
  • 一般来说kube-flannel.yml内容无需修改,只要使用的flannel默认地址和podSubnet: 10.244.0.0/16保持一致就行。
  • 如果有公网但无法访问githubusercontent.com,可以自行配置/etc/hosts,例如通过api.ipshu.com查询真实IP,输入raw.githubusercontent.com查询到真实IP地址(例如:185.199.111.133),那么就将185.199.111.133   raw.githubusercontent.com添加到/etc/hosts中

 

4. 部署动作(node节点)

4.1. 准备工作

在master节点上,将配置信息分发到各个node节点上,方便其他节点使用kubectl

scp $HOME/.kube/config root@csitest-centos8-0002:~/

scp $HOME/.kube/config root@csitest-centos8-0003:~/

scp $HOME/.kube/config root@csitest-centos8-0004:~/

 

4.2. 加入集群

执行之前的kubeadm join命令,例如:

kubeadm join 10.0.0.24:6443 --token j5f6gk.ngt79gdeg3sxnr3q --discovery-token-ca-cert-hash sha256:db7de7cf051863b87337d091d6a532a7affaf5ac2b61102c519bdd14de916de0

实际命令以之前打印的命令为准。

4.3. 检查工作

确认节点均为ready。

0条评论
0 / 1000
勇哥很忙
2文章数
0粉丝数
勇哥很忙
2 文章 | 0 粉丝
勇哥很忙
2文章数
0粉丝数
勇哥很忙
2 文章 | 0 粉丝
原创

部署一套自己本地的K8S集群(下)

2023-07-10 08:28:08
36
0

1. 检查工作(所有节点)

检查kubelet、crictl、containerd运行状态是否正常

 

2. 部署动作(master节点)

此时,kubelet和containerd应该处于正常运行状态,只不过内部会因为K8S核心组件未部署,会有一些报错日志

2.1. 生成证书(部署K8S时不用做,只是后续证书失效后才需要)

sudo kubeadm init phase kubelet-start

sudo kubeadm init phase certs all

cd /etc/kubernetes/

mkdir backup

mv admin.conf controller-manager.conf kubelet.conf scheduler.conf backup

kubeadm init phase kubeconfig all

2.2. 生成kubeadm部署的相关配置

生成kubeadm的默认配置

kubeadm config print init-defaults >  kubeadm-config.yaml

 

修改 kubeadm-config.yaml的内容(重点关注标红部分,没有就新增,有就修改)

apiVersion: kubeadm.k8s.io/v1beta3

bootstrapTokens:

- groups:

  - system:bootstrappers:kubeadm:default-node-token

  token: abcdef.0123456789abcdef

  ttl: 24h0m0s

  usages:

  - signing

  - authentication

kind: InitConfiguration

localAPIEndpoint:

  advertiseAddress: 10.0.0.24

  bindPort: 6443

nodeRegistration:

  criSocket: unix:///var/run/containerd/containerd.sock

  imagePullPolicy: IfNotPresent

  name: csitest-centos8-0001

  taints: null

---

apiServer:

  timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta3

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns: {}

etcd:

  local:

    dataDir: /var/lib/etcd

imageRepository: registry.aliyuncs.com/google_containers

kind: ClusterConfiguration

kubernetesVersion: 1.25.5

networking:

  dnsDomain: cluster.local

  serviceSubnet: 10.96.0.0/12

  podSubnet: 10.244.0.0/16

scheduler: {}

 

其中:

advertiseAddress: 10.0.0.24为你master节点与其他节点通信的地址。

criSocket: unix:///var/run/containerd/containerd.sock为containerd配置的对外提供服务的sock地址

name: csitest-centos8-0001为主master节点的hostname

imageRepository: registry.aliyuncs.com/google_containers表示你拉取镜像的地址前缀,一般国内都用阿里的

kubernetesVersion: 1.25.5表示K8S版本号

podSubnet: 10.244.0.0/16一般在yaml都不会自带,所以需要你添加,因为我常用flannel网络插件,所以用flannel的这个默认地址。

2.3. 镜像拉取

先用kubeadm config images list --config kubeadm-config.yaml命令,查看拉取的镜像是否跟你要的一致。

你确定好没问题以后,执行命令正式拉取:

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

确定镜像拉取完后,再进行下一步。

注意:这里拉取的pause的镜像地址,需要与之前“构建containerd配置”这一节的pause地址保持一致

2.4. 部署master节点

执行命令进行master的部署:

kubeadm init --config kubeadm-config.yaml

 

执行成功后,将配置提供给kubectl使用(kubectl命令执行的时候会自动去~/.kube目录下读取config文件用于和apiserver通信):

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

记录node节点的加入口令:

kubeadm token create --print-join-command

例如会返回如下结果:

kubeadm join 10.0.0.24:6443 --token j5f6gk.ngt79gdeg3sxnr3q --discovery-token-ca-cert-hash sha256:db7de7cf051863b87337d091d6a532a7affaf5ac2b61102c519bdd14de916de0

这样其他node节点需要加入K8S集群,就需要用到这段kubeadm join的语句了。

3. CNI网络配置(master节点)

下载yaml:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

部署flannel:

kubectl apply -f kube-flannel.yml

 

注意:

  • 如果下载flannel镜像较慢或者无公网,则自行下载后,再导入。Yaml也是同理。
  • 一般来说kube-flannel.yml内容无需修改,只要使用的flannel默认地址和podSubnet: 10.244.0.0/16保持一致就行。
  • 如果有公网但无法访问githubusercontent.com,可以自行配置/etc/hosts,例如通过api.ipshu.com查询真实IP,输入raw.githubusercontent.com查询到真实IP地址(例如:185.199.111.133),那么就将185.199.111.133   raw.githubusercontent.com添加到/etc/hosts中

 

4. 部署动作(node节点)

4.1. 准备工作

在master节点上,将配置信息分发到各个node节点上,方便其他节点使用kubectl

scp $HOME/.kube/config root@csitest-centos8-0002:~/

scp $HOME/.kube/config root@csitest-centos8-0003:~/

scp $HOME/.kube/config root@csitest-centos8-0004:~/

 

4.2. 加入集群

执行之前的kubeadm join命令,例如:

kubeadm join 10.0.0.24:6443 --token j5f6gk.ngt79gdeg3sxnr3q --discovery-token-ca-cert-hash sha256:db7de7cf051863b87337d091d6a532a7affaf5ac2b61102c519bdd14de916de0

实际命令以之前打印的命令为准。

4.3. 检查工作

确认节点均为ready。

文章来自个人专栏
K8S部署
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0