【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群

这篇具有很好参考价值的文章主要介绍了【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群

前言

前面简单介绍了Kubernetes的相关架构及其组件,这一章节我们将介绍如何快速搭建Kubernetes的集群,这里我们将使用官方支持的用于部署 Kubernetes 的工具— kubeadm。

环境介绍

主机名 ip地址 节点类型 系统版本
master.example.com 192.168.194.128 master,etcd centos7.x
node1.example.com 192.168.194.130 node1 centos7.x
node2.example.com 192.168.194.131 node2 centos7.x
  • 在所有节点上安装kubeadm,kubectl,kubelet。
    • kubeadm: 安装kubernetes集群的安装工具,(安装master和node上的组件)
    • kubectl: 客户端的命令行工具,
    • kubelet: 每个node启动容器的工具。

​ kubeadm 不能帮你安装或者管理 kubeletkubectl, 所以你需要确保它们与通过 kubeadm 安装的控制平面的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 然而,控制平面与 kubelet 之间可以存在一个次要版本的偏差,但 kubelet 的版本不可以超过 API 服务器的版本。 例如,1.7.0 版本的 kubelet 可以完全兼容 1.8.0 版本的 API 服务器,反之则不可以。

  • 节点要求。
    • 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令。
    • 每台机器 2 GB 或更多的 RAM(如果少于这个数字将会影响你应用的运行内存)。
    • CPU 2 核心及以上。
    • 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)。
    • 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。请参见这里了解更多详细信息。
    • 开启机器上的某些端口。请参见这里了解更多详细信息。
    • 禁用交换分区。为了保证 kubelet 正常工作,必须禁用交换分区。
      • 例如,sudo swapoff -a 将暂时禁用交换分区。要使此更改在重启后保持不变,请确保在如 /etc/fstabsystemd.swap 等配置文件中禁用交换分区,具体取决于你的系统如何配置。

安装kubernetes集群

基础环境设置

  • 所有节点时间同步
[root@master ~]#ntpdata ntp1.aliyun.com
## 如果没有ntpdate命令,则需要安装ntp
  • 所有节点关闭防火墙
## 关闭防火墙
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@master ~]#
  • 所有节点关闭selinux
## 关闭selinux
[root@master ~]# getenforce
Enforcing
[root@master ~]#
[root@master ~]# setenforce 0
[root@master ~]# getenforce
Permissive
[root@master ~]# sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
  • 所有节点关闭swap
## 临时关闭
[root@master ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819         201        1050           9         567        1457
Swap:          2047           0        2047
[root@master ~]# swapoff -a
[root@master ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819         200        1051           9         567        1457
Swap:             0           0           0
[root@master ~]#

## 永久关闭挂载
[root@master ~]#sed -i '/swap/ s/^/#/' /etc/fstab
  • 所有节点修改内核参数,开启ip_fword
[root@master ~]#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@master ~]#sysctl   -p
  • 所有节点 加载内核模块(lvs的负载模块,用于kube-proxy负载均衡器)
[root@master ~]# 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
[root@master modules]# chmod 755 /etc/sysconfig/modules/ipvs.modules
[root@master modules]#
[root@master modules]# bash /etc/sysconfig/modules/ipvs.modules
[root@master modules]#  lsmod |grep "ip_vs|nf_conntrack"
ip_vs_sh               12688  0
ip_vs_wrr              12697  0
ip_vs_rr               12600  0
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  2 ip_vs,nf_conntrack_ipv4
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack
[root@master modules]#

  • 所有节点按照docker

Kubernetes在1.24版本之前,默认使用的是docker为pod中的容器,从v1.24版本之后将不在默认使用,因此仍想要使用docker,则必须安装一个额外的服务 cri-dockerd。 cri-dockerd 是一个基于传统的内置 Docker 引擎支持的项目

  • 默认情况下,Kubernetes 使用 容器运行时接口(Container Runtime Interface,CRI) 来与你所选择的容器运行时交互。如果你不指定运行时,kubeadm 会自动尝试通过扫描已知的端点列表来检测已安装的容器运行时。如果检测到有多个或者没有容器运行时,kubeadm 将抛出一个错误并要求你指定一个想要使用的运行时。

  • Docker Engine 没有实现 CRI, 而这是容器运行时在 Kubernetes 中工作所需要的。 为此,必须安装一个额外的服务 cri-dockerd。 cri-dockerd 是一个基于传统的内置 Docker 引擎支持的项目, 它在 1.24 版本从 kubelet 中移除。

docker安装见此文章:docker安装

安装Kubernetes集群

安装kubeadm,kubectl,kubelet
  • 添加kubernetes的镜像源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
  • 安装指定版本
[root@master ~]#yum list kubeadm --showduplicates |sort -r
[root@master ~]#yum list kubectl --showduplicates |sort -r
[root@master ~]#yum list kubelet --showduplicates |sort -r

[root@master ~]#yum install -y  kubeadm-1.23.9 kubectl-1.23.9  kublet-1.23.9

本章节以安装1.21.9版本为例

  • 启动kubelet
[root@master ~]#systemctl enable kubelet && systemctl start kubelet
kubeadm初始化集群(master节点操作)
  • 生成初始化集群的配置文件
[root@master ~]# sudo kubeadm config print init-defaults > kubeadm-config.yaml
  • 修改kubedm-config.yml文件
[root@master ~]# cat kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.194.128
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: 192.168.194.128
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.21.9
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16
scheduler: {}
[root@master ~]#

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器

  • advertiseAddress: 指定api server的地址
  • name: 指定master的地址或者主机名但是必须能解析到
  • imageRepository: 因为相关组件是以容器的方式进行部署的,这块时指定容器拉取镜像的镜像仓库(这里使用的是阿里的镜像仓库)
  • kubernetesVersion: 指定安装的kubeam的版本(即与我们安装的kubeadm的版本保持一致)
  • serviceSubnet: service服务的地址段;
  • podSubnet: pod的地址段;
  • 初始化集群
## 通过我们生成的配置文件进行初始化
[root@master ~]# kubeadm init --config kubeadm-config.yaml

可能出现的错误1:

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器

  • 该错误涉及到 bridge-nf-call-iptables 内核参数的设置。这个内核参数是必须启用的,以确保 Kubernetes 网络功能的正常运行,echo “1” > /proc/sys/net/bridge/bridge-nf-call-iptables
  • 初始化完成之后打印信息如下

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器

  • export KUBECONFIG=/etc/kubernetes/admin.conf 这个命令是将 Kubernetes 集群的配置文件路径设置为环境变量 KUBECONFIG 的值。这个配置文件通常位于 /etc/kubernetes/admin.conf,它包含了连接到 Kubernetes API Server 所需的证书、密钥和其他配置信息。通过设置 KUBECONFIG 环境变量,您可以让 kubectl 命令自动使用该配置文件进行身份验证和授权。当您运行 kubectl 命令时,它会自动加载 KUBECONFIG 环境变量中指定的配置文件。例如,如果您运行 kubectl get pods 命令,则 kubectl 会自动使用 KUBECONFIG 环境变量中指定的配置文件连接到 Kubernetes API Server 并获取 Pod 列表。

  • mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    • 这组命令用于将 Kubernetes 集群的配置文件复制到当前用户的 ~/.kube 目录,并将其所有权赋予当前用户,以便您可以使用 kubectl 命令与 Kubernetes 集群进行交互。

      具体来说,这组命令执行以下操作:

      1. 使用 mkdir -p $HOME/.kube 命令创建一个名为 .kube 的目录,并将其放置在当前用户的主目录下。如果该目录已存在,则不会执行任何操作。
      2. 使用 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 命令将 Kubernetes 集群的配置文件 /etc/kubernetes/admin.conf 复制到当前用户的 ~/.kube 目录下,文件名为 config。如果当前用户的 ~/.kube 目录下已经存在一个名为 config 的文件,则会提示您是否要覆盖它。
      3. 使用 sudo chown $(id -u):$(id -g) $HOME/.kube/config 命令将 config 文件的所有权赋予当前用户。这可以确保您可以使用 kubectl 命令与 Kubernetes 集群进行交互,而不需要使用 sudo 命令。
  • kubeadm join 192.168.194.128:6443 --token abcdef.0123456789abcdef \
            --discovery-token-ca-cert-hash sha256:f8fb58292ca8ca384216786d03c2b94ab58aa7649fca703f7764cd0466399c8e
    
    • node节点加入kubenetes加入集群的命令
  • 依次执行上述指令
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]#   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
cp: overwrite ‘/root/.kube/config’?
[root@master ~]#
[root@master ~]#
[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
[root@master ~]#
  • 查看集群节点信息

此时查看到的节点信息为NotReady,是因为网络插件还没有安装的原因

[root@master ~]# kubectl get nodes
NAME              STATUS   ROLES                  AGE   VERSION
192.168.194.128   NotReady    control-plane,master   13h   v1.21.9
[root@master ~]#

Kubernetes 中的节点状态可以分为以下几种:

  1. Ready:表示节点已经准备好接受 Pod 调度,并且可以正常运行。如果节点状态为 Ready,则 Kubernetes 将在该节点上运行 Pod。
  2. NotReady:表示节点无法正常运行。这种状态可能是由于网络故障、资源不足或其他问题导致的。
  3. Unknown:表示 Kubernetes 无法获取有关节点状态的信息。这种情况通常是由于与节点通信失败或节点组件故障导致的。
  4. SchedulingDisabled:表示节点不接受新的 Pod 调度。这种状态通常是由于管理员手动禁用了节点或节点出现了问题导致的。
安装网络插件flannel(master操作)
  • 使用pod的方式运行flannel
[root@master ~]wget https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
[root@master ~]# kubectl apply -f kube-flannel.yml
namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created
[root@master ~]#
  • 查看集群信息
此时节点为Ready状态
[root@master ~]# kubectl get nodes
NAME              STATUS   ROLES                  AGE   VERSION
192.168.194.128   Ready    control-plane,master   13h   v1.21.9
[root@master ~]#

##flannel的pod启动正常
[root@master ~]# kubectl get pods -n kube-flannel
NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-7zsqp   1/1     Running   0          30s
[root@master ~]#
  • flannel网桥也存在

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器

Node节点加入集群
  • 方式一
## 该指令在初始化集群的时候会生成,
[root@master ~]#kubeadm join 192.168.194.128:6443 --token abcdef.0123456789abcdef \
        --discovery-token-ca-cert-hash sha256:f8fb58292ca8ca384216786d03c2b94ab58aa7649fca703f7764cd0466399c8e
  • 方式二

    • 生成配置文件
    ## 生成加入集群的配置文件
    [root@node1 ~]# kubeadm config print join-defaults > kube-join.yaml
    
    • 修改配置文件
    [root@node1 ~]# cat kube-join.yml
    apiVersion: kubeadm.k8s.io/v1beta2
    caCertPath: /etc/kubernetes/pki/ca.crt
    discovery:
      bootstrapToken:
        apiServerEndpoint: 192.168.194.128:6443
        token: abcdef.0123456789abcdef
        unsafeSkipCAVerification: true
      timeout: 5m0s
      tlsBootstrapToken: abcdef.0123456789abcdef
    kind: JoinConfiguration
    nodeRegistration:
      criSocket: /var/run/dockershim.sock
      name: 192.168.194.130
      taints: null
    [root@node1 ~]#
    
    1. apiServerEndpoint: 连接apiserver的地址,即master的api地址,这里可以改为192.168.194.128:6443,如果master集群部署的话,这里需要改为集群vip地址
    2. token及tlsBootstrapToken: 连接master使用的token,这里需要与master上的InitConfiguration(生成的kubeadm-config.yaml文件)中的token配置一致
    3. name: node节点的名称,如果使用主机名,需要确保master节点可以解析该主机名。否则的话可直接使用ip地址
    • 执行加入
    [root@node1 ~]# kubeadm join --config kube-join.yml
    
  • 注意事项

    • token会过期,当token过期之后需要手动生成token
    [root@master ~]# kubeadm token create
    muq6w3.fu4ztgk00pxet9k4
    
    • 查看tokne信息
    [root@master ~]# kubeadm token list
    TOKEN                     TTL         EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GR      OUPS
    abcdef.0123456789abcdef   22h         2023-05-05T09:18:48+08:00   authentication,signing   <none>                                                     system:b      ootstrappers:kubeadm:default-node-token
    muq6w3.fu4ztgk00pxet9k4   23h         2023-05-05T10:25:42+08:00   authentication,signing   <none>                                                     system:b      ootstrappers:kubeadm:default-node-token
    [root@master ~]#
    
    • 将token生成sha256字符串
    [root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
    f8fb58292ca8ca384216786d03c2b94ab58aa7649fca703f7764cd0466399c8e
    [root@master ~]#
    
查看集群状态信息
  • 节点信息
[root@master ~]# kubectl get nodes
NAME                STATUS   ROLES                  AGE   VERSION
192.168.194.128     Ready    control-plane,master   81m   v1.21.9
192.168.194.130     Ready    <none>                 74m   v1.23.9
node2.example.com   Ready    <none>                 73m   v1.23.9
[root@master ~]#

我们在work node节点加入到集群后,可能会出现有的显示的是node的ip,有的显示的是node的域名,当想要将域名改为ip,则需要到对应的节点上修改kubelet的配置项。添加–hostname-override参数

[root@node2 ~]# cat  /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --hostname-override=192.168.194.131"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
[root@node2 ~]#
[root@node2 ~]# systemctl restart kubelet.service
[root@node2 ~]#
  • namespace信息
[root@master ~]# kubectl get namespaces
NAME              STATUS   AGE
default           Active   82m
kube-flannel      Active   80m
kube-node-lease   Active   82m
kube-public       Active   82m
kube-system       Active   82m
[root@master ~]#
  • pod信息
##  不知道-n(namespqce)的时候,默认为default的命名空间
[root@master ~]# kubectl get pods -n kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
coredns-6f6b8cc4f6-72tvk                  1/1     Running   0          82m
coredns-6f6b8cc4f6-bw9rc                  1/1     Running   0          82m
etcd-192.168.194.128                      1/1     Running   2          82m
kube-apiserver-192.168.194.128            1/1     Running   2          82m
kube-controller-manager-192.168.194.128   1/1     Running   3          82m
kube-proxy-98qnw                          1/1     Running   0          76m
kube-proxy-n957q                          1/1     Running   0          82m
kube-proxy-tgstw                          1/1     Running   0          74m
kube-scheduler-192.168.194.128            1/1     Running   3          82m
[root@master ~]#
  • 查看node详细信息
[root@master ~]# kubectl describe nodes 192.168.194.128
  • 查看pod详细信息
[root@master ~]# kubectl describe pods kube-scheduler-192.168.194.128 -n kube-system

重置集群

  • 删除节点
kubectl drain <node name> --delete-emptydir-data --force --ignore-daemonset
  • 重置 kubeadm 安装的状态
kubeadm reset
  • 重置过程不会重置或清除 iptables 规则或 IPVS 表。如果你希望重置 iptables,则必须手动进行:
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
  • 如果要重置 IPVS 表,则必须运行以下命令:
ipvsadm -C
  • 删除节点:
kubectl delete node <节点名称>

安装dashboard

  • 下载dashboard的yaml文件
[root@master ~]#wget \ https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
  • 修改recommended.yaml文件
  • 默认这个部署文件当中,会单独创建一个名为kubernetes-dashboard的命名空间,并将kubernetes-dashboard部署在该命名空间下。dashboard的镜像来自docker hub官方,所以可不用修改镜像地址,直接从官方获取即可。

  • 但是在默认情况下,dashboard并不对外开放访问端口,因此需要使用nodePort的方式将其端口暴露出来,主要修改如下:

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器

  • 执行安装
[root@master ~]#kubectl apply  -f recommended.yaml
  • 查看安装情况
[root@master ~]# kubectl get namespaces
NAME                   STATUS   AGE
default                Active   5h1m
kube-flannel           Active   4h59m
kube-node-lease        Active   5h1m
kube-public            Active   5h1m
kube-system            Active   5h1m
kubernetes-dashboard   Active   3h24m
[root@master ~]#
[root@master ~]# kubectl get pod -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-7c857855d9-8xjsj   1/1     Running   1          3h24m
kubernetes-dashboard-658b66597c-q65fh        1/1     Running   0          65m
[root@master ~]#
[root@master ~]#
[root@master ~]# kubectl get service -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.109.143.189   <none>        8000/TCP        3h25m
kubernetes-dashboard        NodePort    10.101.172.188   <none>        443:30725/TCP   3h25m
[root@master ~]#

此时kubernetes-dashboard已经监听到宿主机的30725端口

  • 访问kubernetes-dashboard

通过宿主机ip+端口的形式访问:https://192.168.194.128:30725

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器

登录方式:

  • 选择kubeconfig时:将.kube/config的文件拷贝出来,在上传上去即可;
  • 用token的方式我们可以通过如下指令获取token:
[root@master ~]# kubectl describe secrets -n kubernetes-dashboard  $(kubectl get secrets -n kubernetes-dashboard  |grep kubernetes-dashboard-token |awk '{print $1}') |grep token

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器

  • 通过该token登入集群以后,发现很多namespace包括一些其他的资源都没有足够的权限查看。这是因为默认我们使用的这个帐户只有有限的权限。我们可以通过对该sa授予cluster-admin权限来解决这个问题。
  • 再次修改recommended.yaml文件

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器

  • 删除并重新创建
[root@master ~]# kubectl delete -f recommended.yaml
namespace "kubernetes-dashboard" deleted
serviceaccount "kubernetes-dashboard" deleted
service "kubernetes-dashboard" deleted
secret "kubernetes-dashboard-certs" deleted
secret "kubernetes-dashboard-csrf" deleted
secret "kubernetes-dashboard-key-holder" deleted
configmap "kubernetes-dashboard-settings" deleted
role.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
clusterrole.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
clusterrolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted
deployment.apps "kubernetes-dashboard" deleted
service "dashboard-metrics-scraper" deleted
deployment.apps "dashboard-metrics-scraper" deleted

[root@master ~]#
[root@master ~]#
[root@master ~]# kubectl apply -f recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
[root@master ~]#
[root@master ~]#

execstart=/usr/bin/kubelet $kubelet_kubeconfig_args $kubelet_config_args $ku,Kubernetes,kubernetes,云原生,容器


至此kubernetes集群已经安装完毕,但是在实际生产中我们需要保证matser节点高可用,甚至使用外部的etcd高可用,后续我们将详细说明。
er created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
[root@master ~]#
[root@master ~]#


至此kubernetes集群已经安装完毕,但是在实际生产中我们需要保证matser节点高可用,甚至使用外部的etcd高可用,后续我们将详细说明。文章来源地址https://www.toymoban.com/news/detail-774470.html

到了这里,关于【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生|kubernetes|kubernetes集群部署神器kubekey安装部署高可用k8s集群(半离线形式)

    前面利用kubekey部署了一个简单的非高可用,etcd单实例的kubernetes集群,经过研究,发现部署过程可以简化,省去了一部分下载过程(主要是下载kubernetes组件的过程)只是kubernetes版本会固定在1.22.16版本,etcd集群可以部署成生产用的外部集群,并且apiserver等等组件也是高可用,

    2024年02月15日
    浏览(50)
  • kubeadm极速部署Kubernetes 1.26版本集群

    1.1.1 主机操作系统说明 序号 操作系统及版本 备注 1 CentOS7u9 1.1.2 主机硬件配置说明 需求 CPU 内存 硬盘 角色 主机名 值 4C 8G 100GB master k8s-master01 值 4C 8G 100GB worker(node) k8s-worker01 值 4C 8G 100GB worker(node) k8s-worker02 1.1.3 主机配置 1.1.3.1 主机名配置 由于本次使用3台主机完成kubernetes集

    2024年02月03日
    浏览(43)
  • [云原生案例2.1 ] Kubernetes的部署安装 【单master集群架构 ---- (二进制安装部署)】节点部分

    Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用。 Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署K8S集群,相对简单。 生产首选,从官方下载发行版的二进制包,手动部署每个组件和自签TLS证书,组成K8S集群,

    2024年02月05日
    浏览(61)
  • 云原生Kubernetes:Kubeadm部署K8S单Master架构

    目录 一、理论 1.kubeadm 2.Kubeadm部署K8S单Master架构 3.环境部署 4.所有节点安装docker 5.所有节点安装kubeadm,kubelet和kubectl 6.部署K8S集群 7.安装dashboard 8.安装Harbor私有仓库 9.内核参数优化方案 二、实验 1.Kubeadm部署K8S单Master架构 2. 部署流程  3.环境部署 4.所有节点安装docker 5.所有节

    2024年02月10日
    浏览(60)
  • Kubernetes技术--使用kubeadm快速部署一个K8s集群

    这里我们配置一个 单master集群 。( 一个Master节点,多个Node节点 ) 1.硬件环境准备 一台或多台机器,操作系统 CentOS7.x-86_x64 。这里我们使用安装了CentOS7的三台虚拟机 硬件配置 : 2GB或更多RAM , 2个CPU或更多CPU , 硬盘30GB或更多 2.主机名称和IP地址规划 3. 初始化准备工作 (1).关

    2024年02月10日
    浏览(58)
  • 【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入!   Kubernetes(简称:k8s) 是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多

    2024年02月07日
    浏览(66)
  • 云原生Kubernetes: Kubeadm部署K8S 1.29版本 单Master架构

    目录 一、实验 1.环境 2.K8S master节点环境准备 3.K8S master节点安装kubelet、kubeadm、kubectl 3.K8S node节点环境准备与软件安装 4.K8S master节点部署服务 5.K8S node节点部署 6.K8S master节点查看集群 7.容器网络(CNI)部署 8.K8S 集群测试 二、问题 1.calico生成资源报错 2.为何要安装docker和ci-d

    2024年02月01日
    浏览(70)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS7.8 1、关闭防火墙 2、配置域名解

    2024年02月08日
    浏览(77)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 容器运行时本次使用containerd。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS

    2024年02月10日
    浏览(47)
  • 一、kubeadm部署Kubernetes(k8s) 1.23.0多主高可用集群

    Kubernetes介绍 kubernetes(k8s)是2015年由Google公司基于Go语言编写的一款开源的容器集群编排系统,用于自动化容器的部署、扩缩容和管理; kubernetes(k8s)是基于Google内部的Borg系统的特征开发的一个版本,集成了Borg系统大部分优势; 官方地址:https://Kubernetes.io 代码托管平台:

    2024年03月25日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包