这是 kubernetes 系列继 187. 【kubernetes】二进制文件方式安装 Kubernetes 集群(三) 后的第 4 篇。
一、插曲
昨晚有个简友在简书平台发消息咨询他在搭建过程中出现的问题,

写文章有人就内容反馈还是一件蛮开心的事情。我直接在本地 VMware 上新建了三台虚拟机,照着自己的教程,重新搭了一个环境。最后查出来这位简友的问题是出在我写文章打字时把单词打错了,改完之后,kube-scheduler 就能启动了。
后来还一起把我自己遇到的一个认证问题解决了,也是把单词打错了,尽管千叮咛万嘱咐还是会出现这种低级的错误,但幸运的是最后发现了,这个确实应该引起重视。
非常欢迎就“二进制方式 安装 kubernetes 环境”问题与我讨论,共同进步。
二、当前进度(新的环境下,因此看到 ip 变了)
- 查看集群内节点状态
kubectl get nodes --kubeconfig=/etc/kubernetes/kubeconfig

可以看到基本已完成,这里说明一下,上述命令里 --kubeconfig=/etc/kubernetes/kubeconfig
其实是可以省略的,不过前提是在环境变量中添加了 KUBECONFIG
。

添加完成之后,执行 source ~/.bashrc
即可。
另外,可以看到目前的 STATUS 还是显示的 NotReady,加下来就是添加 cni
网络插件了。
-
添加 CNI 网络插件
kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"
这是会发现还是处于
NotReady
状态,这时就要再调查一下问题出在哪儿了,kubectl get all -n kube-system
这里发现有一个 pod 处于 Init:0/3 状态,继续调查,
kubectl describe pod calico-node-2nqtk -n kube-system

好了,问题找到了,原来是有一个 Docker 镜像没有下载下来,继续,
docker pull registry.aliyuncs.com/google_containers/pause:3.6
docker tag registry.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
命令在各个节点执行完之后,多等待一会,如下图所示。

三、阶段性胜利
至此,一个二进制文件方式安装的 Kubernetes 集群已经部署完成了,接下来就可以快乐的创建 Pod、Deployment、Service 等资源对象来部署、管理容器应用和微服务了。
四、小小的测试
准备一个 deploy.yaml 文件,内容如下,
apiVersion: apps/v1
kind: Deployment
metadata:
name: qijing-mysql-base-deployment
labels:
name: qijing-mysql-base-deployment
spec:
replicas: 1
selector:
matchLabels:
name: qijing-mysql-base-pod
template:
metadata:
labels:
name: qijing-mysql-base-pod
spec:
nodeSelector:
kubernetes.io/hostname: 192.168.199.31
volumes:
- name: localtime-mysql
hostPath:
path: /etc/localtime
containers:
- name: mysql
image: mysql:8.0.19
volumeMounts:
- mountPath: /etc/localtime
name: localtime-mysql
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "yourpassword"
---
apiVersion: v1
kind: Service
metadata:
name: qijing-mysql-base-svc
labels:
name: qijing-mysql-base-svc
spec:
type: NodePort
ports:
- port: 3306
protocol: TCP
targetPort: 3306
name: http
nodePort: 30307
selector:
name: qijing-mysql-base-pod
执行
kubectl create -f qijing-mysql-deploy.yaml
kubectl get po
kubectl get svc

可以看到 Pod、Service、Deployment对象都创建成功了。
再使用 Navicat 连接一下 mysql试试

这就是程序员的乐趣的吧。
网友评论