上一篇,我们已经部署了k8s,但是node状态为NotReady,并且coredns是pending状态。今天我们来解决这个问题,并且把k8s dashboard(可视化界面)部署上去。

coredns是个DNS服务器,它在k8s里面主要是用来发现服务的。那为什么需要服务发现呢?

我们知道Pod是可以动态增加和删除的,并且可能都不在同一个服务器中,这样每个Pod的IP可能是不断变化的。如果是这样,那部署的程序将无法调用的。

这个时候,k8s引入了Service, 每个Service将会关联它selector名称所有的Pod,Service从创建开始,它的IP就不会变化。我们接口调用时,就可以直接调用Service的IP。我们先看一下Service的部署文件:

---
kind: Service
apiVersion: v1
metadata:
  name: mozhi-basedata
  namespace: mozhi-smartinvent
spec: 
  type: NodePort
  ports: 
    - port: 44321
      targetPort: 80
      nodePort: 32056
  selector:
    name: mozhi-basedata

我们的服务器内网IP是:192.168.124.11,外网IP:20.16.45.21。我们在其他Pod中调用mozhi-basedata的接口,就只需要用192.168.124.11:44321,如果在外网就用20.16.45.21:32056。

哈哈,是不是,我们并不需要关心Pod的IP地址。

接着,就是coredns的作用。我们平常打开百度,并不是在浏览器输入百度的IP吧,我们都是输入域名,因为域名容易记嘛!同样,我们也可以在调用mozhi-basedata服务的时候,直接使用mozhi-basedata名称去访问呢?这个时候coredns就解决了这个问题。具体的应用,我将会在后面的站点部署中详细阐述。

coredns其实还需要依赖一个插件calico(不止这一个,有兴趣的小伙伴可以到去找找),先去官网找到k8s版本对应的calico版本:

https://docs.tigera.io/archive/v3.22/getting-started/kubernetes/requirements

输入命令,拿到部署文件。

curl https://docs.tigera.io/archive/v3.22/manifests/calico.yaml -O

文件会默认放在centos的Home目录下面,拿不到文件的小伙伴,可以后台私信我。

输入命令部署

kubectl apply -f calico.yaml

再来查看pod的情况,可以看到已经在初始化了,这里整个服务器都会卡顿,不要着急,等一等,千万不要做关机操作。如果一直卡,可以把虚拟的CPU和内存调大一点。

kubectl get pods --all-namespaces -o wide

期间,其他的Pod会有几次crashloopbakcoff,不用管它。过一会就会好。如果master node 和pod都正常,就可以进入下一步,部署dashboard。

我们先下载dashboard的yaml文件,这里用的v2.5.1版本。如果raw.githubusercontent.com访问不了,到百度查找,更改/etc/hosts文件。下载不了,同样可以私信我。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 master
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 master
185.199.110.133 raw.githubusercontent.com

在home文件夹下找到recommended.yaml,编辑Service段落,其他不要去编辑,增加外网访问端口。

---
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort # ":"号后面一定要空格
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 32508  #外网访问地址
  selector:
    k8s-app: kubernetes-dashboard
kubectl apply -f recommended.yaml  

当dashboard为running状态时,操作虚拟机的IP地址

ifconfig

在浏览器输入
https://192.168.41.147:32508看是否可以访问。这里一定要用https访问。

home目录下创建admin-user.yaml部署文件

apiVersion: v1
kind: ServiceAccount
metadata:
    name: admin-user
    namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
    name: admin-user
    annotations:
        rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
kubectl create -f admin-user.yaml

获取登录的token,这个token一直时可用的,执行完后可以保存起来

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

到这里,k8s就算全部完成。可以开始部署我们的.net core程序啦。下一节,我将会部署一个简单的程序上去,敬请期待!

如果你觉得我的文章还不错,欢迎关注,转发和评论。大家也可以在微信公众号和今日头条搜索"墨汁软件"关注我哟!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐