加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 云计算 > 正文

一文了解Kubernetes集群管理

发布时间:2022-08-27 12:53:59 所属栏目:云计算 来源:互联网
导读:Kubernetes作为容器的编排平台,它是以集群的形式为业务提供服务。所以在日常的工作中,作为Kubernetes平台的维护者,会经常对集群进行管理。 这里,我将集群管理分为以下几种: 图片 安装集群 前置说明 Kubernetes的集群安装分为:kubeadm安装和二进制安装
  Kubernetes作为容器的编排平台,它是以集群的形式为业务提供服务。所以在日常的工作中,作为Kubernetes平台的维护者,会经常对集群进行管理。
 
  这里,我将集群管理分为以下几种:
 
  图片
 
  安装集群
  前置说明
  Kubernetes的集群安装分为:kubeadm安装和二进制安装。在这里,只会介绍kubeadm的安装。
 
  安装说明:
 
  集群节点:2个
 
  IP信息:
 
  master:192.168.205.128
 
  node:192.168.205.128
 
  Kubernetes版本:v1.24.2
 
  运行时:containerd
 
  系统:centos 7.9
 
  系统内核:3.10.0-1160
 
  环境准备
  这是安装的不是生产级别的集群,只是为了演示使用。
 
  (1)在每个节点添加host信息。
 
  复制
  $ cat >> /etc/hosts << EOF
  192.168.205.128 kk-master
  192.168.205.130 kk-node01
  EOF
  1.
  2.
  3.
  4.
  (2)关闭防火墙和SELinux。
 
  复制
  $ systemctl stop firewalld
  $ systemctl disable firewalld
  $ setenforce 0
  $ cat /etc/selinux/config
  SELINUX=disabled
  1.
  2.
  3.
  4.
  5.
  (3)优化内核参数。
 
  复制
  $ cat > /etc/sysctl.d/k8s.conf << EOF
  net.bridge.bridge-nf-call-ip6tables = 1
  net.bridge.bridge-nf-call-iptables = 1
  net.ipv4.ip_forward = 1
  vm.swappiness=0
  EOF
  1.
  2.
  3.
  4.
  5.
  6.
  执行以下命令使其生效:
 
  复制
  $ modprobe br_netfilter
  $ sysctl -p /etc/sysctl.d/k8s.conf
  1.
  2.
  (4)关闭swap空间。
 
  复制
  $ swapoff -a
  1.
  注释/etc/fstab文件中swap挂载。
 
  复制
  $ cat /etc/fstab
  #
  # /etc/fstab
  # Created by anaconda on Tue Apr 12 17:10:16 2022
  #
  # Accessible filesystems, by reference, are maintained under '/dev/disk'
  # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  #
  /dev/mapper/centos-root /                       xfs     defaults        0 0
  UUID=bc73c871-006c-4e24-a7af-6beb9aac06a7 /boot                   xfs     defaults        0 0
  # /dev/mapper/centos-swap swap                    swap    defaults        0 0
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  11.
  (5)安装ipvs软件包。
 
  复制
  $ cat > /etc/sysconfig/modules/ipvs.modules <<EOF
  #!/bin/bash
  modprobe -- ip_vs
  modprobe -- ip_vs_rr
  modprobe -- ip_vs_wrr
  modprobe -- ip_vs_sh
  modprobe -- nf_conntrack_ipv4
  EOF
  $ chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  $ yum install ipset ipvsadm -y
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  (6)同步服务器时间。
 
  复制
  $ yum install chrony -y
  $ systemctl enable chronyd
  $ systemctl start chronyd
  $ chronyc sources
  1.
  2.
  3.
  4.
  (7)安装containerd。
 
  复制
  $ yum install -y yum-utils
   device-mapper-persistent-data
   lvm2
  $ yum-config-manager
   --add-repo
   https://download.docker.com/linux/centos/docker-ce.repo
  $ yum list | grep containerd
  $ yum install containerd -y
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  创建containerd配置文件。
 
  复制
  $ mkdir -p /etc/containerd
  # containerd config default > /etc/containerd/config.toml
  # 替换配置文件
  $ sed -i "s#k8s.gcr.io#registry.cn-hangzhou.aliyuncs.com/google_containers#g"  /etc/containerd/config.toml
  $ sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
  $ sed -i "s#https://registry-1.docker.io#https://registry.cn-hangzhou.aliyuncs.com#g"  /etc/containerd/config.toml
  1.
  2.
  3.
  4.
  5.
  6.
  启动containerd。
 
  复制
  $ systemctl daemon-reload
  $ systemctl enable containerd
  $ systemctl restart containerd
  1.
  2.
  3.
  (8)安装Kubernetes组件。
 
  复制
  $ cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  [kubernetes]
  name=Kubernetes
  baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
  enabled=1
  gpgcheck=0
  repo_gpgcheck=0
  gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
   http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  EOF
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  安装指定版本的组件。
 
  复制
  $ yum install -y kubelet-1.24.2 kubeadm-1.24.2 kubectl-1.24.2
  1.
  设置运行时。
 
  复制
  $ crictl config runtime-endpoint /run/containerd/containerd.sock
  1.
  设置kubelet为自启动。
 
  复制
  $ systemctl daemon-reload
  $ systemctl enable kubelet && systemctl start kubelet
  1.
  2.
  初始化集群
  上面把基础环境准备好了,现在开始真正的进行集群初始化。
 
  初始化master节点
  然后接下来在 master 节点配置 kubeadm 初始化文件,可以通过如下命令导出默认的初始化配置:
 
  复制
  $ kubeadm config print init-defaults > kubeadm.yaml
  1.
  然后根据我们自己的需求修改配置,比如修改 imageRepository 的值,kube-proxy 的模式为 ipvs,需要注意的是由于我们使用的containerd作为运行时,所以在初始化节点的时候需要指定cgroupDriver为systemd【1】。
 
  复制
  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: 192.168.205.128
    bindPort: 6443
  nodeRegistration:
    criSocket: unix:///var/run/containerd/containerd.sock
    imagePullPolicy: IfNotPresent
    name: master
    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.cn-hangzhou.aliyuncs.com/google_containers
  kind: ClusterConfiguration
  kubernetesVersion: 1.24.2
  networking:
    dnsDomain: cluster.local
    serviceSubnet: 10.96.0.0/12
  scheduler: {}
  ---
  apiVersion: kubeproxy.config.k8s.io/v1alpha1
  kind: KubeProxyConfiguration
  mode: ipvs
  ---
  apiVersion: kubelet.config.k8s.io/v1beta1
  kind: KubeletConfiguration
  cgroupDriver: systemd
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  11.
  12.
  13.
  14.
  15.
  16.
  17.
  18.
  19.
  20.
  21.
  22.
  23.
  24.
  25.
  26.
  27.
  28.
  29.
  30.
  31.
  32.
  33.
  34.
  35.
  36.
  37.
  38.
  39.
  40.
  41.
  42.
  43.
  44.
  然后使用上面的配置文件进行初始化:
 
  复制
  $ kubeadm init --config=kubeadm.yaml
  ......
  Your Kubernetes control-plane has initialized successfully!
  To start using your cluster, you need to run the following as a regular user:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  Alternatively, if you are the root user, you can run:
    export KUBECONFIG=/etc/kubernetes/admin.conf
  You should now deploy a pod network to the cluster.
  Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
    https://kubernetes.io/docs/concepts/cluster-administration/addons/
  Then you can join any number of worker nodes by running the following on each as root:
  kubeadm join 192.168.205.128:6443 --token abcdef.0123456789abcdef
          --discovery-token-ca-cert-hash sha256:51b5e566d3f95aaf3170916d67958bc16cb1b44934885a857b07ee58f041334a
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  11.
  12.
  13.
  14.
  15.
  如上输出表示master节点初始化成功。
 
  初始化node节点
  在初始化node节点的时候,必须把kubernetes需要的组件安装上。确保安装完成后,使用初始化master节点成功后输出的命令加入节点即可。
 
  复制
  $ kubeadm join 192.168.205.128:6443 --token abcdef.0123456789abcdef
          --discovery-token-ca-cert-hash sha256:51b5e566d3f95aaf3170916d67958bc16cb1b44934885a857b07ee58f041334a
  1.
  2.
  然后可以在master节点使用kubectl get node查看节点是否加入。
 
  复制
  $ kubectl get no
  NAME        STATUS     ROLES           AGE     VERSION
  kk-node01   NotReady   <none>          15s     v1.24.2
  master      NotReady   control-plane   3m29s   v1.24.2
  1.
  2.
  3.
  4.
  初始化网络
  通过上面kubectl get node查看节点信息的时候发现节点的STATUS是NotReady,这是因为现在整个集群还没有相应的网络插件,导致整个集群并不能正常的运行,下面我们就来安装对应的网络插件。
 
  网络插件的选择有很多种,比如flannel,calico等。
 
  (1)下载calico的yaml清单。
 
  复制
  $ wget https://raw.githubusercontent.com/projectcalico/calico/master/manifests/calico.yaml
  1.
  (2)安装calico。
 
  复制
  $ kubectl apply -f calico.yaml
  1.
  (3)在集群中查看安装结果。
 
  复制
  $ kubectl get po -n kube-system | grep calico
  calico-kube-controllers-5d49fc6c56-szm6v   1/1     Running   0          3m21s
  calico-node-66q62                          1/1     Running   0          3m21s
  calico-node-lwrcm                          1/1     Running   0          3m21s
  1.
  2.
  3.
  4.
  现在可以看到kubernetes所有节点的状态变成Ready了。
 
  复制
  $ kubectl get no
  NAME        STATUS   ROLES           AGE   VERSION
  kk-node01   Ready    <none>          26m   v1.24.2
  master      Ready    control-plane   29m   v1.24.2
  1.
  2.
  3.
  4.
  安装Dashboard
  上面集群安装完成后,基本都需要使用命令行进行操作,如果为了提升集群的可视化,可以安装一些Dashboard。
 
  目前市面上的Dashboard有很多,比如kubesphere、kuboard、kubernetes dashboard等。这里安装的是kubernetes dashboard,其他可视化产品可以自己去了解并使用。
 
  (1)使用如下命令进行安装。
 
  复制
  $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
  1.
  (2)查看安装情况。
 
  复制
  $ kubectl get po -n kubernetes-dashboard
  NAME                                         READY   STATUS    RESTARTS   AGE
  dashboard-metrics-scraper-7bfdf779ff-f9zwn   1/1     Running   0          41s
  kubernetes-dashboard-6cdd697d84-lvzvz        1/1     Running   0          41s

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读