防伪码:无边落木萧萧下,不尽长江滚滚来。

我们很高兴地宣布Kubernetes 1.18的发布,这是我们2020年的第一个版本!Kubernetes 1.18包含38项功能增强:15个稳定版,11个beta版,12个alpha版。

Kubernetes 1.18是一个“代表精确度与完成度”的版本。为了更好的用户体验,Kubernetes 1.18在Beta版和稳定版功能改进方面做了大量工作。同时努力增加了一些新功能开发和令人兴奋的新特性,进一步提高用户体验。1.18版本在alpha、beta和稳定版本上几乎有差不多的增强,这表明社区在提高Kubernetes的可靠性,以及继续扩展其现有功能方面做出了巨大努力。

核心主题

Kubernetes拓扑管理器升级到Beta版-对齐!

作为Kubernetes在1.18版中的beta特性,拓扑管理器特性支持CPU和其他设备(如SR-IOV VFs)实现NUMA对齐,允许工作负载运行在优化环境中降低延迟。在引入拓扑管理器之前,CPU和设备管理器只能各自独立做出资源分配决策,导致在multi-socket 系统上出现不希望的分配,从而导致关键应用性能下降。

Serverside Apply迈向Beta 2

Server-side Apply在1.16中升级为Beta版,现在在1.18中引入了第二个Beta版。该新版本将跟踪和管理所有新Kubernetes对象的字段更改,确保用户及时了解哪些资源做了变更,以及何时更改的。

IngressClass扩展Ingress,并替换非推荐注解

在Kubernetes 1.18中,有两项重要的Ingress添加:新的pathType字段和新的IngressClass资源。pathType字段允许指定如何匹配路径。除了默认的特定实现的类型之外,还新增了Exact和Prefix两种路径类型。

IngressClass资源用于描述Kubernetes集群中的一种Ingress。通过在ingress上使用新的ingressClassName字段,ingress可以指定与其相关联的类。这一全新资源和字段代替了不被推荐的kubernets .io/ ings .class注解。

SIG-CLI引入kubectl调试

在相当长的一段时间内,SIG-CLI一直在讨论是否需要调试功能。随着短生命周期容器的开发,如何使用构建在kubectl exec上的工具来支持开发人员变得显而易见。kubectl调试命令的添加(alpha版)允许开发人员轻松调试集群中的pod,这一增加是无价的。这个命令允许创建一个即席容器,它运行在待检查的pod旁边,同时附带控制台以进行交互式故障排查。

为Kubernetes推出Windows CSI支持的Alpha版

随着Kubernetes 1.18的发布,Windows的CSI代理的alpha版本也即将发布。CSI代理允许无授权(预先批准的)容器在Windows上执行授权存储操作。利用CSI代理可以在Windows中支持CSI驱动。

其他更新

升级到稳定版:

基于污点的驱逐

kubectl diff

CSI Block存储支持

API Server试运行

在CSI calls中传递Pod信息

支持Out-of-Tree vSphere Cloud Provider

支持针对Windows工作负载的GMSA

跳过不可附加的CSI存储卷

PVC cloning(克隆)

将kubectl包代码移到staging

用于Windows的RunAsUserName

AppProtocol for Services and Endpoints

扩展Hugepage功能

client-go签名重构,实现标准化选项和上下文处理

节点本地DNS缓存

重要变更

EndpointSlice API

将kubectl包代码移到staging

CertificateSigningRequest API

扩展Hugepage特性

client-go签名重构,实现标准化选项和上下文处理

发布徽标

CentOS8安装Kubernetes 1.18_第1张图片


用户亮点

爱立信正在使用Kubernetes和其他云原生技术来交付有强大表现的5G网络,CI/CD实现成功降低高达90%。

Zendesk正在使用Kubernetes来运行大约70%的现有应用。所有新应用也都是运行在Kubernetes上,使其应用开发更加节省时间,获得更大的灵活性和快速。

LifeMiles公司自从迁移到Kubernetes,基础设施支出减少了50%,现有资源能力增加一倍。

生态系统更新

CNCF公布的年度调查结果显示,生产环境中使用Kubernetes的数量正在飙升。调查发现,78%的受访者在生产中使用Kubernetes,而去年这一比例为58%。

由CNCF主办的“Kubernetes概论”课程,报名人数超过10万人。


环境说明:

#操作系统:centos8

#docker版本:19.03.8

#kubernetes版本:v1.18

#网络插件:calico

#kube-proxy网络转发: ipvs

#kubernetes源:使用阿里云源

#service-cidr:10.10.0.0/16

#pod-network-cidr:10.122.0.0/16 

1、系统准备

查看系统版本

[root@yangwen ~]# cat /etc/centos-release
CentOS Linux release 8.1.1911 (Core) 
[root@yangwen ~]# uname -r
4.18.0-147.el8.x86_64

配置网络

[root@yangwen ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=660cffeb-fd7a-4552-aaea-972ee0559e5c
DEVICE=ens33
ONBOOT=yes

添加阿里源

[root@yangwen ~]# rm -rfv /etc/yum.repos.d/*
已删除'/etc/yum.repos.d/CentOS-AppStream.repo'
已删除'/etc/yum.repos.d/CentOS-Base.repo'
已删除'/etc/yum.repos.d/CentOS-centosplus.repo'
已删除'/etc/yum.repos.d/CentOS-CR.repo'
已删除'/etc/yum.repos.d/CentOS-Debuginfo.repo'
已删除'/etc/yum.repos.d/CentOS-Extras.repo'
已删除'/etc/yum.repos.d/CentOS-fasttrack.repo'
已删除'/etc/yum.repos.d/CentOS-HA.repo'
已删除'/etc/yum.repos.d/CentOS-Media.repo'
已删除'/etc/yum.repos.d/CentOS-PowerTools.repo'
已删除'/etc/yum.repos.d/CentOS-Sources.repo'
已删除'/etc/yum.repos.d/CentOS-Vault.repo'
[root@yangwen ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2595  100  2595    0     0   7587      0 --:--:-- --:--:-- --:--:-

配置主机名

[root@yangwen ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.40.131 yangwen

关闭swap,注释swap分区

[root@yangwen ~]# swapoff -a
[root@yangwen ~]# cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Fri Apr 17 04:23:58 2020
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=d49ac8b0-9833-4747-9a80-587d85f15a80 /boot                   ext4    defaults        1 2
#/dev/mapper/cl-swap     swap                    swap    defaults

配置内核参数,将桥接的IPv4流量传递到iptables的链

[root@yangwen ~]# cat > /etc/sysctl.d/k8s.conf < 
> net.bridge.bridge-nf-call-ip6tables = 1
> 
> net.bridge.bridge-nf-call-iptables = 1
> 
> EOF
[root@yangwen ~]# /usr/sbin/sysctl --system

2、安装常用包

[root@yangwen ~]# yum install vim bash-completion net-tools gcc -y

3、使用aliyun源安装docker-ce

[root@yangwen ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@yangwen ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

添加仓库自:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@yangwen ~]# yum -y install docker-ce

安装docker-ce如果出现以下错

CentOS8安装Kubernetes 1.18_第2张图片

解决方法

[root@yangwen ~]# wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
[root@yangwen ~]# yum install containerd.io-1.2.6-3.3.el7.x86_64.rpm

然后再安装docker-ce即可成功

[root@yangwen ~]# yum -y install docker-ce

添加aliyundocker仓库加速器

[root@yangwen ~]# mkdir -p /etc/docker
[root@yangwen ~]# tee /etc/docker/daemon.json <<-'EOF'
> 
> {
> 
>   "registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
> 
> }
> 
> EOF
{
  "registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
}
[root@yangwen ~]# systemctl daemon-reload
[root@yangwen ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@yangwen ~]# systemctl restart docker

注:如果有报错,yum update一下然后重新安装docker即可

4、安装kubectl、kubelet、kubeadm

添加阿里kubernetes源

[root@yangwen ~]# cat < /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@yangwen ~]# yum install kubectl kubelet kubeadm

一直输入y,回车

[root@yangwen ~]# systemctl enable kubelet
Created symlink /etc/systemd/system/multi-user.target.wants/kubelet.service → /usr/lib/systemd/system/kubelet.service.

5、初始化k8s集群

[root@yangwen ~]#kubeadm init --apiserver-advertise-address=0.0.0.0 \
--apiserver-cert-extra-sans=127.0.0.1 \
--image-repository=registry.aliyuncs.com/google_containers \
--ignore-preflight-errors=all \
--kubernetes-version=v1.18.0 \
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.122.0.0/16

POD的网段为: 10.122.0.0/16, api server地址就是master本机IP。

这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址。

集群初始化成功后返回如下信息:


W0408 09:36:36.121603   14098 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[init] Using Kubernetes version: v1.18.0
[preflight] Running pre-flight checks
        [WARNING FileExisting-tc]: tc not found in system path
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Starting the kubelet
[certs] Using certificateDir folder "/etc/kubernetes/pki"
[certs] Generating "ca" certificate and key
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [master01.paas.com kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.10.0.1 192.168.122.21]
[certs] Generating "apiserver-kubelet-client" certificate and key
[certs] Generating "front-proxy-ca" certificate and key
[certs] Generating "front-proxy-client" certificate and key
[certs] Generating "etcd/ca" certificate and key
[certs] Generating "etcd/server" certificate and key
[certs] etcd/server serving cert is signed for DNS names [master01.paas.com localhost] and IPs [192.168.122.21 127.0.0.1 ::1]
[certs] Generating "etcd/peer" certificate and key
[certs] etcd/peer serving cert is signed for DNS names [master01.paas.com localhost] and IPs [192.168.122.21 127.0.0.1 ::1]
[certs] Generating "etcd/healthcheck-client" certificate and key
[certs] Generating "apiserver-etcd-client" certificate and key
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
[kubeconfig] Writing "controller-manager.conf" kubeconfig file
[kubeconfig] Writing "scheduler.conf" kubeconfig file
[control-plane] Using manifest folder "/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest for "kube-apiserver"
[control-plane] Creating static Pod manifest for "kube-controller-manager"
W0408 09:36:43.343191   14098 manifests.go:225] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
[control-plane] Creating static Pod manifest for "kube-scheduler"
W0408 09:36:43.344303   14098 manifests.go:225] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[apiclient] All control plane components are healthy after 23.002541 seconds
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[kubelet] Creating a ConfigMap "kubelet-config-1.18" in namespace kube-system with the configuration for the kubelets in the cluster
[upload-certs] Skipping phase. Please see --upload-certs
[mark-control-plane] Marking the node master01.paas.com as control-plane by adding the label "node-role.kubernetes.io/master=''"
[mark-control-plane] Marking the node master01.paas.com as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule]
[bootstrap-token] Using token: v2r5a4.veazy2xhzetpktfz
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
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
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.122.21:6443 --token v2r5a4.veazy2xhzetpktfz \
    --discovery-token-ca-cert-hash sha256:daded8514c8350f7c238204979039ff9884d5b595ca950ba8bbce80724fd65d4

记录生成的最后部分内容,此内容需要在其它节点加入Kubernetes集群时执行。

根据提示创建kubectl

[root@yangwen ~]# mkdir -p $HOME/.kube
[root@yangwen ~]#sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@yangwen ~]#sudo chown $(id -u):$(id -g) $HOME/.kube/config

执行下面命令,使kubectl可以自动补充

[root@yangwen ~]#source <(kubectl completion bash)

查看节点,pod

CentOS8安装Kubernetes 1.18_第3张图片

[root@yangwen ~]# kubectl get node
NAME      STATUS   ROLES    AGE    VERSION
yangwen   Ready    master   110m   v1.18.2
[root@yangwen ~]# kubectl get pod --all-namespaces

CentOS8安装Kubernetes 1.18_第4张图片

node节点为NotReady,因为corednspod没有启动,缺少网络pod

6、安装calico网络

[root@yangwen ~]# kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
configmap/calico-config created
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created
clusterrole.rbac.authorization.k8s.io/calico-kube-controllers created
clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers created
clusterrole.rbac.authorization.k8s.io/calico-node created
clusterrolebinding.rbac.authorization.k8s.io/calico-node created
daemonset.apps/calico-node created
serviceaccount/calico-node created
deployment.apps/calico-kube-controllers created
serviceaccount/calico-kube-controllers created
[root@yangwen ~]# kubectl get pod --all-namespaces

CentOS8安装Kubernetes 1.18_第5张图片

此时集群状态正常

7、安装kubernetes-dashboard

官方部署dashboard的服务没使用nodeport,将yaml文件下载到本地,在service里添加nodeport

[root@yangwen ~]#wget  https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml
[root@yangwen ~]# vim recommended.yaml
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30000
  selector:
    k8s-app: kubernetes-dashboard
[root@yangwen ~]#kubectl create -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

查看pod,service


NAME                                        READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-dc6947fbf-869kf   1/1     Running   0          37s
kubernetes-dashboard-5d4dc8b976-sdxxt       1/1     Running   0          37s
[root@yangwen ~]# kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.10.25.162             8000/TCP        44s
kubernetes-dashboard        NodePort    10.10.150.164           443:30000/TCP   44s

通过页面访问,推荐使用firefox浏览器

CentOS8安装Kubernetes 1.18_第6张图片

使用token进行登录,

创建 token

[root@yangwen ~]# kubectl create sa dashboard-admin -n kube-system
serviceaccount/dashboard-admin created

授权token 访问权限

[root@yangwen ~]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created

获取token 

[root@yangwen ~]# ADMIN_SECRET=$(kubectl get secrets -n kube-system | grep dashboard-admin | awk '{print $1}')

获取dashboard.kubeconfig 使用token值

[root@yangwen ~]# DASHBOARD_LOGIN_TOKEN=$(kubectl describe secret -n kube-system ${ADMIN_SECRET} | grep -E '^token' | awk '{print $2}')
[root@yangwen ~]# echo ${DASHBOARD_LOGIN_TOKEN}
eyJhbGciOiJSUzI1NiIsImtpZCI6ImZRZWdIWENkZUUyZHlzX2duNHhxUjNmVFRIY3hqdlJyUzhnZ050TFY0cW8ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tMmZrd3ciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZmM5NzQyZDktMTdhZC00ZWI1LWIxYTItZTBhZmFhNmU5OWFlIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.hrvBZTSaxVEQY3EQb_n_CerWyz22s3OKwfceh5YxIGTNO5hnw9AWSqmY7hjksrqZ82nsRUxVZeSYQ-G1P0UQs3TEKzUzP5NUppcZ56nW0hu7MHiiQ10uzNaAnhqTpdylKPiy6XgZGu4QVITiZwhUxf3t2dMeYfw3YdIfo5xJR_4OPhQuENlhBeq_5OxBHz_zBhfUazknKp4x1abfTONvWfqgaWBXCKD8EdCn2q4ydfkJR6e4UjCM-u3SAxUI1Cir15WfJOxW9GEXPtVCtlb7HiVQyJJ-McuhQRcMOnOF36tiFmb4vzhWUOsXxdHrIHgjz72x674bKTBn7PyNgb2XwA

CentOS8安装Kubernetes 1.18_第7张图片

注意事项:

#kubeadm token 默认时间是24 小时,过期记得从新生成token 然后加入节点
# 查看token
kubeadm   token list
# 创建token
kubeadm   token create
#忘记初始master节点时的node节点加入集群命令怎么办
# 简单方法
kubeadm token create --print-join-command
# 第二种方法
token=$(kubeadm token generate)
kubeadm token create $token --print-join-command --ttl=0
# 接下来就可以部署监控,应用等。