欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Katacoda Kubernetes系列场景一:Launch Single Node Kubernetes Cluster

程序员文章站 2022-07-13 22:13:03
...

最近在学习Kubernetes(k8s)的使用,发现了一个好网站katacoda,可以在浏览器的沙盒环境中学习k8s的使用和概念,真的是非常友好了。因此做下笔记,以后可以回顾。

这是该系列入门的第一篇,使用的是Minikube。Minikube可以在本地虚拟机中运行一个单节点的Kubernetes集群,以便用户学习。更多可以关注 https://github.com/kubernetes/minikube

Step 1 启动Minikube

在katacoda中,Minikube已经被预先安装并且被配置好了。使用以下命令查看版本

minikube version

使用以下命令启动Minkube

minikube start --wait=false

Step 2 集群信息

我们可以通过kubectlCLI 与集群交互,这是管理k8s集群并且运行应用的主要方式。

集群的详细信息和健康状况可以从如下命令得到

kubectl cluster-info

可以看到如下结果

Kubernetes master is running at https://172.17.0.14:8443
KubeDNS is running at https://172.17.0.14:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

如果想查看节点信息,可以使用如下命令

kubectl get nodes

可以看到如下结果

NAME       STATUS   ROLES    AGE     VERSION
minikube   Ready    master   2m39s   v1.17.3

该命令显示所有能承载我们应用的节点。此时我们只有1个节点,并且可以看到其状态是Ready,表示已经准备好接收应用的部署。

Step 3 部署容器

有一个运行的Kubernetes集群后,就可以部署容器了。

使用kubectl run命令将容器部署到集群中。

kubectl create deployment first-deployment --image=katacoda/docker-http-server

其中,kubectrl create deployment表示创建具有指定名称的deployment部署。

deployment NAME --image=image [--dry-run]

部署的状态可以从运行的Pods中被查看

kubectl get pods

结果如下

NAME                               READY   STATUS    RESTARTS   AGE
first-deployment-666c48b44-74w54   1/1     Running   0          7m2s

Pods简介

在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。

更多可见K8S实战基础知识之POD


当容器运行时,根据不同的需要,可以通过不同的网络选项暴露。例如NodePort,给容器提供了一个动态的端口。

kubectl expose deployment first-deployment --port=80 --type=NodePort

运行该命令可以找到暴露的端口

export PORT=$(kubectl get svc first-deployment -o go-template='{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}')

之后便可以访问

curl host01:$PORT

Step 4 Dashboard

Dashboard是k8s的用户界面,可以用如下命令开启

kubectl addons enable dashboard

通过/opt/kubenetes-dashboard.yaml文件部署dashboard(可以看到yaml是一种很好的部署方式)

apiVersion: v1
kind: Namespace
metadata:
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/minikube-addons: dashboard
  name: kubernetes-dashboard
  selfLink: /api/v1/namespaces/kubernetes-dashboard
spec:
  finalizers:
  - kubernetes
status:
  phase: Active
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard-katacoda
  namespace: kubernetes-dashboard
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 9090
    nodePort: 30000
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort

通过该命令,可以查看dashboard是否成功启动

kubectl get pods -n kubernetes-dashboard -w

从yaml文件中可以看到,端口被暴露在30000,在katacoda中,可以从如下网址查看

https://2886795278-30000-elsy04.environments.katacoda.com/

参考资料