赞
踩
如果没有安装docker-desktop,可以先去 https://www.docker.com/products/docker-desktop 下载和安装。如果已经安装过,请升级到新的版本。我的docker版本是4.11.1:
然后在Docker-Engine里配置一下国内镜像,这样kubernetes启用会迅速一些:
- {
- "debug": true,
- "registry-mirrors": [
- "https://hub-mirror.c.163.com",
- "https://mirror.baidubce.com"
- ],
- "builder": {
- "gc": {
- "defaultKeepStorage": "20GB",
- "enabled": true
- }
- },
- "experimental": false
- }
配置镜像后,可以使用下面命令检查一下:
- # docker info
- ...
- Registry Mirrors:
- https://hub-mirror.c.163.com/
- https://mirror.baidubce.com/
然后在图形界面上启用kubernets:
完成后使用kubectl命令检查一下版本:
- # kubectl version
- Client Version: version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.2", GitCommit:"f66044f4361b9f1f96f0053dd46cb7dce5e990a8", GitTreeState:"clean", BuildDate:"2022-06-15T14:22:29Z", GoVersion:"go1.18.3", Compiler:"gc", Platform:"darwin/arm64"}
- Kustomize Version: v4.5.4
- Server Version: version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.2", GitCommit:"f66044f4361b9f1f96f0053dd46cb7dce5e990a8", GitTreeState:"clean", BuildDate:"2022-06-15T14:15:38Z", GoVersion:"go1.18.3", Compiler:"gc", Platform:"linux/arm64"}
查看唯一的master节点:
- # kubectl get node
- NAME STATUS ROLES AGE VERSION
- docker-desktop Ready control-plane 7m43s v1.24.2
查看默认的名称空间:
- # kubectl get ns(namespace)
- NAME STATUS AGE
- default Active 18h
- kube-node-lease Active 18h
- kube-public Active 18h
- kube-system Active 18h
查看默认的pods:
- #kubectl get pods --all-namespaces
- NAMESPACE NAME READY STATUS RESTARTS AGE
- kube-system coredns-6d4b75cb6d-8pfxc 1/1 Running 0 11m
- kube-system coredns-6d4b75cb6d-tdg64 1/1 Running 0 11m
- kube-system etcd-docker-desktop 1/1 Running 0 11m
- kube-system kube-apiserver-docker-desktop 1/1 Running 0 11m
- kube-system kube-controller-manager-docker-desktop 1/1 Running 0 11m
- kube-system kube-proxy-2s227 1/1 Running 0 11m
- kube-system kube-scheduler-docker-desktop 1/1 Running 0 11m
- kube-system storage-provisioner 1/1 Running 0 11m
- kube-system vpnkit-controller 1/1 Running 0 11m
接下来,我们安装kubernetes-dashboard。安装后可以图形化的管理/查看kubernetes的内部状态,非常方便,同时也可以验证搭建的kubernetes可以正常工作。
首先下载kubernetes-dashboard的yaml文件:
curl -LO https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml
使用apply子指令安装 kubectl apply -f recommended.yaml
所有yaml文件的启用都使用
kubectl apply
创建rbac权限的配置文件 kubernetes-dashboard-admin.yaml
,然后启用。
apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard
命令正常执行就可以完成kubernetes-dashboard的安装。再次查询命名空间,你会发现多出了ku bernetes-dashboard
- #kubectl get ns
- NAME STATUS AGE
- default Active 45h
- kube-node-lease Active 45h
- kube-public Active 45h
- kube-system Active 45h
- kubernetes-dashboard Active 45h
我们先使用下面的命令,在本地8001端口代理kubernetes的内部服务:
kubectl proxy
然后使用浏览器访问下面的网页链接:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
这时候页面会提示需要输入token。
可以使用下面命令查看admin-user的token:
kubectl -n kubernetes-dashboard create token admin-user
然后复制粘贴到页面里面就可以了
如果要删除 ServiceAccount
和 ClusterRoleBinding
.
- kubectl -n kubernetes-dashboard delete serviceaccount admin-user
- kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user
容器化也会带来一个问题:当服务模块众多,每个小项目的微服务都已以容器化的形式部署,并且放到很多台服务器。以前用docker run跑一两个应用,人肉可以运维和操作 ,但是如果几千个容器的话,就难以管理 。因此大规模容器编排系统应运而生(编:同一个应用的容器划分成一组;排:比如A应用在这个服务器不够了,就在别的服务器拿来扩充几个)
kubernetes具有以下特性:
● 服务发现和负载均衡:
服务发现:发现宕机有问题的容器,不降任务给他
负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
● 存储编排
Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。应用需要内存则找k8s要,k8s开辟一块存储空间。应用删了后存储也没了
● 自动部署和回滚
你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态 更改为期望状态。例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。——回滚到上一次部署的版本
● 自动完成装箱计算
Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。 当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。——指定了这么多内存,超过了就会被杀掉
● 自我修复
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的 运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。——一个机器挂了,可以将其中的容器部署到其他机器
● 密钥与配置管理
Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。
参考资料
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。