我的k8s随笔:Kubernetes实践经验

作者注:本文仅供参考,请谨慎阅读

本文集中记录k8s集群实践中遇到的问题以及一些小知识点。由于各人环境不同,限于经验,本文仅供参考。
注:本文会不定时更新。

知识篇

实验记录

自己实验一个简单的gin框架测试。完成,基于busybox,但添加了库。
configmap挂载目录,不成功。
secret能用base64解出文字,实际上如果使用?
外部loadbalancer能不能测试?如自建一个nginx?
yaml的下载镜像策略最好加上imagePullPolicy: IfNotPresent,如果同一镜像,版本不同?

每个 pod 都有对应的根容器 pause(是每个pod,还是每个容器,待确认)。如果 pod 删除再创建,pod名称是新的,pause也是新的。如果pause还存在,可能会出错。
使用kubectl删除资源后,pod会退出,但docker ps -a还能看到,过一段时间会消失,具体未测试。

杂项

kubectl create 可创建新资源。再次调用,会出错,资源已存在。
kubectl apply 可创建新资源(当资源不存在时),再次调用,会更新文件的值,如无更新,则不会改变。
如果create创建的资源,修改后,用apply,会有警告。

kubectl config view 查看当前集群信息。

kubectl get pod -w 可查看pod的实时状态

命名规则:
dns子域名:不超过253字符,只包括:小写字母,或-,或.,以字母开始和结束。
dns标签:同上,但不超过63字符。

可用nodeName或nodeSelector来指定调度的节点。

1
2
3
4
5
spec:
nodeName: edge-node2

nodeSelector:
name: dev #指定调度节点为带有label标记为:name=dev的node节点

端口映射相关:(待实验)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hostPort:主机映射,相当于docker run -p 8081:8080
ports:
- containerPort: 8080
hostPort: 8081

hostNetwork:主机网络,相当于 docker run --net=host
hostNetwork: true # 注:与containers同级

由service指定
ports:
- protocol: TCP
port: 8080
targetPort: 80

由service指定,但使用单独的IP
ports:
- protocol: TCP
port: 80
externalIPs:
- 192.168.0.102

k8s 与 docker 的一些操作关联:

1
2
3
4
5
6
securityContext:
privileged: true
--> --privileged

hostNetwork: true
--> --net=host

问题篇

master主机IP改变

提示:

1
Unable to connect to the server: dial tcp 172.18.18.10:6443: i/o timeout

原因:机器更改网络,IP改了。
解决:参考网络,未解决