不会飞的章鱼

熟能生巧,勤能补拙,静能生慧;念念不忘,必有回响。

首先,我们以之前实践过的nginx-deployment.yaml文件为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apiVersion: apps/v1
kind: Deployment # API对象的类型
metadata:
name: nginx-deployment
spec:
selector:
matchLabels: # 过滤规则的定义
app: nginx
replicas: 2 # 定义Pod副本个数为2
template:
metadata: labels: # 元数据
app: nginx # labels,一组键值对的标签
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80

这个Deployment定义的编排动作是:请确保携带了app:nginx标签的Pod的个数永远等于spec.replicas指定的个数-> 2。

这就意味着,如果在这个集群中,携带app:nginx标签的Pod个数大于等于2,就会有旧的Pod被删除;反之就会有新的Pod被创建。

那么,究竟是Kubernetes项目的哪个组件在执行这些操作呢?——kube-controller-manager组件。

阅读全文 »

本文将开始系统学习Kubernetes的编排原理,因此先从最重要最基本的Pod开始。

为什么需要Pod

首先需要记住:

  • PodKubernetes项目的院子调度单位;
  • Namespace做隔离,Cgroups做限制,rootfs做文件系统
  • 容器的本质是进程,Kubernetes的本质是操作系统。

Pod的实现原理

阅读全文 »

本文将以创建一个nginxdeployment为例体验Kubernetes的基础使用

KubernetesDocker等很多项目最大的不同是:它不推荐你使用命令行方式的方式直接运行容器,而是希望你用YAML文件的方式,即把容器的定义、参数、配置都记录在一个YAML文件中,然后用

1
# kubectl create -f test.yml

运行起来。

这么做最直接的好处就是,会有一个文件记录下Kubernetes到底运行了什么。

阅读全文 »

因为某些原因,需要卸载kubernetes集群,本文将分享完整卸载kubernetes的方法。

默认是root用户操作

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
# 首先清理运行到k8s群集中的pod
kubectl delete node --all

# 停止所有k8s相关服务
for service in kube-apiserver kube-controller-manager kubectl kubelet kube-proxy kube-scheduler;
do
systemctl stop $service
done

# 重置集群
kubeadm reset -f

# 删除相关的配置文件
rm -rf ~/.kube/

rm -rf /etc/kubernetes/

rm -rf /etc/systemd/system/kubelet.service.d

rm -rf /etc/systemd/system/kubelet.service
# 删除kubenetes有关的可执行文件
rm -rf /usr/bin/kube*

rm -rf /etc/cni

rm -rf /opt/cni

rm -rf /var/lib/etcd

rm -rf /var/etcd

apt clean all

apt remove kube*

缘起

2022.8.24(周三)晚上,我参加了Zadig的线下MeetUp。

而与Zadig结缘是因为关注了一个云原生公众号,他们推送了有关Zadig的消息后,我想,既然在成都,而且是晚上,那就去参加一下呗,见一见各位大佬,结果确实是大佬云集的一次线下聚会。

缘聚

周三晚上,我和周如约而至在成都市大跃啤酒。

阅读全文 »

题目

剑指 Offer 32 - I. 从上到下打印二叉树

题解

队列

  • 初始化队列queue和结果数组res,从二叉树根节点3开始
  • 先将3推入到队列queue中,看3有没有左子树和右子树
  • 有的话,将3从队列queue中取出,放入结果数组res的第一位,此时res = []int{3}
  • 访问3的左子树节点9,将9推入到队列queue
  • 此时看9有没有左子树和右子树,没有,将9从队列queue中取出放入结果数组res中,此时res = []int{3,9}
  • 访问3的右子树节点20,将20推入到队列queue
  • 此时看20有没有左子树和右子树,有,将左子树15推入队列queue
  • 看15有没有左子树和右子树,没有,将队列中的20,15依次取出放入结果数组res,此时res = []int{3,9,20,15}
  • 访问20的右子树7,发现7没有左子树和右子树,将7推入进队列queue中,然后取出放入res,此时res = []int{3,9,20,15,7}
阅读全文 »