K8S 集群部署_集群初始化 | 学习笔记

简介: 快速学习 K8S 集群部署_集群初始化

开发者学堂课程【Kubernetes 极速入门:K8S 集群部署_集群初始化】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/658/detail/10883


K8S 集群部署_集群初始化

 

内容介绍:

一、集群初始化操作

二、初始化的命令

三、数据初始化之后的操作

四、三台主机的实际操作

 

一、集群初始化操作

注意所在的位置是在 master 节点操作,这就意味着在哪个节点进行操作,哪个节点就是 master 节点,如果在第一台主机上操作,第一台主机就是 master 节点。

 

二、初始化的命令

[root@master1 ~]# kubeadm init --kubernetes-version=v1.17.2(版本)--pod-network-cidr(写法是cidr)=172.16.0.0/16(pod网络)--apiserver-advertise-

address=192.168.216.100(当前主机的IP)

执行以上命令以后,就可以进行初始化的动作。

运行结果如下:

[init] Using Kubernetes version :v1.17 .2(初始化过程中会出现版本信息)

[preflght] Runnng pre-flight checks(根据版本去检查一些东西)

[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-startj starting the kubelet(启动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 [master1 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.216.100]

[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 [master1 localhost] and IPs [192.168.216.100127.0.0.1 ::1]

[certs] Generating "etcd/peer" certificate and key

[certs] etcd/peer serving cert is signed for DNS names [masterl localhost] and IPs [192.168.216.100 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"

[ kubeconfigj 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"

W0208 16:36:47.632464  8298 manifests.go:214] the default kube-apiserver authorization-mode is 'wode , RBAC" ; using "Node ,RBAC"

[control-plane] Creating static Pod manifest for "kube-scheduler"

W208 16:36:47.634408.8298 manifests.go:214] the default kube-apiserver authorization-mode is Mode,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 statry "/etc/kubernetes/manifests "This can take up to 4m0s

[apiclient] All control plane components are healthy after 21.503874 seconds

[upload-config] Storing the configuration used in ConfigMap " kubeadm-config" in the "kube- system" Namespace

[kubelet] Creating a ConfigMap " kubelet-config-1.17" in namespace kube-system with the configuration for the kubelets in the cluster

[ upload-certs] Skipping phase. Pleaser see --upload-certs

[ mark-control-plane] Marking the node" master1 as control-plane by adding the label "node- role. kubernetes. io/master='' "

[mark-control-plane] Marking the node master1 as control-plane by adding the taints [node- role. kube rnetes. io/master :NoSchedule]

[bootstrap-token] Using token: uahnj7 .2wzl7nvx8obxhfnh

[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles

[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CS

Rs in order for nodes to get long term certificate credentials

[bootstrap-token] configured RBAC rules to allow the cs rapprover controller autom atically approve CSRs from a Node Bootstrap Token

[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the C luster

[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" name space

[kubelet-finalize] Updating " /etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client cerificate and key

[addons] Applied essential addon: CoreDNS

[addons] Applied essential addon: kube-proxy

Your Kubernetes control-plane has initialized successfully!

文件都完成以后,这句话是在说整个集群的控制平面已经初始化完成。

控制平面的意思是在 Kubernetes 当中,由于 master 节点属于管理整个集群的,包括 work 节点是用来运行用户 pod,通过 Kubernete 进行的 master 角色和 work 角色来完成整个的集群的控制,除了平面控制以外还有数据平面。


三、数据初始化之后的操作

第一步:

To start using your cluster, you need to run the following as a regular user:

mkdir -p $HOME/ . kube(创建文件夹)

sudo cp -i /etc/kube rnetes/admin. conf $HOME/ . kube/config(拷贝)

sudo chown $(id -u):$(id -g) $HOME/ . kube/config(赋予相应的属主和属组)

第二步:

You should now deploy a pod network to the cluster.(使用网络附件的形式为集群布置一个pod网络)

Run "kubectl apply -f [podnetwork] . yaml" with one of the options listed at:

https://kube rnetes . 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.216. 100: 6443 --token uahnj7 .2wzl7nvx8obxhfnh \

-discovery- token-ca-cert-hash sha256: 48486b2cd572881 fa2818417 7d331353146f2692744d2cc6bfa21132f01c4478

 

四、三台主机的实际操作

1.打开文件

在 worker1、worker2和 worker3中分别打开文件 calico-39,通过拖拉的方式即可。

[ root@master1 ~]# ls

anaconda- ks.cfg calico-39. image. List kube-p.tar p. tar

导入相应的镜像

[ root@masterl -]# cd calico-39/

[ root@master1 calico-39]# ls

calico-cni.tar calico. Yml  pod2daemon- flexvol. tar

calico-node. tar   kube-controllers. tar .

(第一个镜像)

[ root@masterl calico-39]# docker load -i calico-cni. tar

1c95c77433e8: Loading layer 72. 47MB/ 72.47MB

f919277f01fb: Loading layer 90.76MB/90.76MB

0094c919faf3: Loading layer 10.2:4kB/10.24kB

9e1263ee4198: Loading layer 2.56kB/2.56kB

Loaded image: calico/cni:v3.9.0

(第二个镜像)

[ root@master1 calico-39]# docker load -i calico-node.tar

538afb24c98b: Loading layer 33. 76MB/33.76MB

85b8bbfa3535: Loading layer 3.584kB/3.584kB

7a653a5cb14b: Loading layer 3 。584kB/3.584kB

97cc86557fed: Loading layer 21. 86MB/21.86MB

3abae82a71aa: Loading layer 11. 26kB/11.26kB

7c85b99e7c27: Loading layer 11. 26kB/11.26kB

0e20735d7144: Loading layer 6. 55MB/6.55MB

2e3dede6195a: Loading layer 2. 975MB/2.975MB

f85ff1d9077d: Loading layer 55.87MB /55.87MB

9d55754fd45b: Loading layer 1.14MB/1. 14MB

Loaded image: calico/node:v3.9.0

(第三个镜像)

[root@masterl calico-39]# docker load -i kube-controllers.tar

fd6ffbcdb09f: Loading layer 47 .35MB/47.35MB

9c4005f3e0bc: Loading layer 3. 104MB/3.104MB

Loaded image: calico/kube-controllers:v3.9.0

(最后的镜像)

[ root@masterl calico-39]# docker load -i pod2daemon-flexvol. tar

3fc64803ca2d: Loading layer 4. 463MB/4.463MB

3aff8caf48a7: Loading layer 5. 12kB/5.12kB

89effeea5ce5: Loading layer 5. 572MB/5.572MB

Loaded image: calico/pod2daemon- flexvol:v3.9.0

以上操作是在第一台主机的操作,第二、三台主机都是需要去做相应的操作。

2.master节点中修改calico的yml文件

Yml文件是用来作资源对象部署的说明式文件,需要去修改几项内容。

(1)由于 calico 自身网络发现机制有问题,因为需要修改ca1ico使用的物理网卡,添加607及608行

602   - name: CLUSTER TYPE

603   value: "k8s ,bgp"

604   # Auto-detect the BGP IP address.

605   - name: IP

606   value: "autodetect"

607   - name: IP_ AUTODETECTION_ METHOD

608   value: "interface=eth. *"

(2)修改为初始化时设置的 pod-network-cidr

619  - name: CALICO IPV4POOL_ CIDR

620  value: "172.16.0.0/16"

修改的具体操作:

607   name: IP_ AUTODETECTION_ METHOD

608   value: "interface=ens .*

622   value: 172.16.0.0/16

3.应用的具体操作

[ root@master1 calico-39]# kubectl apply -f calico. yml

configmap/calico-config created

>--discove ry- token-ca-cert-hash sha256: 48486b2cd572881fa28184177d331353146f2692744d2cc6bfa21132f01c4478

W020816:56:30. 87226723286 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.

如何知道是否已经加入集群:

Run ' kubectl get nodes 'on the control-plane to see this node join the cluster.

[ root@master1 ~]# kubectl get nodes

NAME    STATUS    ROLES    AGE    VERSION

master1   Ready    master    20m    v1.17.2

worker1   Ready    <none>    45s   v1.17.2

worker2   Ready    <none>    56s    v1.17.2

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
213 1
|
1月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
222 89
|
6月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
271 9
|
6月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
7月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
8月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
819 33
|
存储 Kubernetes API
在K8S集群中,如何正确选择工作节点资源大小? 2
在K8S集群中,如何正确选择工作节点资源大小?
|
Kubernetes Serverless 异构计算
基于ACK One注册集群实现IDC中K8s集群以Serverless方式使用云上CPU/GPU资源
在前一篇文章《基于ACK One注册集群实现IDC中K8s集群添加云上CPU/GPU节点》中,我们介绍了如何为IDC中K8s集群添加云上节点,应对业务流量的增长,通过多级弹性调度,灵活使用云上资源,并通过自动弹性伸缩,提高使用率,降低云上成本。这种直接添加节点的方式,适合需要自定义配置节点(runtime,kubelet,NVIDIA等),需要特定ECS实例规格等场景。同时,这种方式意味您需要自行
基于ACK One注册集群实现IDC中K8s集群以Serverless方式使用云上CPU/GPU资源
|
Kubernetes API 调度
在K8S集群中,如何正确选择工作节点资源大小?1
在K8S集群中,如何正确选择工作节点资源大小?
|
弹性计算 运维 Kubernetes
本地 IDC 中的 K8s 集群如何以 Serverless 方式使用云上计算资源
本地 IDC 中的 K8s 集群如何以 Serverless 方式使用云上计算资源

热门文章

最新文章

推荐镜像

更多