正文
一、插曲
昨晚有个网友在平台发消息咨询他在搭建过程中出现的问题,
写文章有人就内容反馈还是一件蛮开心的事情。我直接在本地 VMware 上新建了三台虚拟机,照着自己的教程,重新搭了一个环境。最后查出来这位简友的问题是出在我写文章打字时把单词打错了,改完之后,kube-scheduler 就能启动了。
后来还一起把我自己遇到的一个认证问题解决了,也是把单词打错了,尽管千叮咛万嘱咐还是会出现这种低级的错误,但幸运的是最后发现了,这个确实应该引起重视。
非常欢迎就“二进制方式 安装 kubernetes 环境”问题与我讨论,共同进步。
二、当前进度(新的环境下,因此看到 ip 变了)
- 查看集群内节点状态
kubectl get nodes --kubeconfig=/etc/kubernetes/kubeconfig
基本已完成
可以看到基本已完成,这里说明一下,上述命令里 --kubeconfig=/etc/kubernetes/kubeconfig
其实是可以省略的,不过前提是在环境变量中添加了 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试试
没问题
这就是程序员的乐趣的吧。