k8s学习:部署本地应用到k8s集群
部署Nginxkubectl create deployment nginx --image=nginx:alpine2)暴露端口,让集群外的机器可以访问kubectl expose deployment nginx1 --port=81 --type=NodePort3)查看服务kubectl get service此时,外部机器可以通过服务器master节点的ip:31659访问服务...
访问集群需要安装kubectl,kubectl主要用来管理集群。
安装kubectl详见https://blog.csdn.net/qq_38196982/article/details/118732563
方式1:使用官方镜像
以Nginx镜像为例。此方式只是为了体验一下
1)部署Nginx
kubectl create deployment nginx --image=nginx:alpine
2)暴露端口,让集群外的机器可以访问
kubectl expose deployment nginx1 --port=81 --type=NodePort
3)查看服务
kubectl get service
4)查看集群信息
kubectl cluster info
此时,外部机器可以通过服务器master节点的ip:31659访问服务。此处,在浏览器里输入10.206.230.26:31659即可访问,集群会把31659端口自动映射到81端口。
方法2:使用yaml部署nginx
这种方式可以将自己的本地项目部署到k8s集群,主要流程是:访问到集群后,编写dockerfile生成镜像,然后给镜像打标签提交到仓库,编写yaml文件,指定镜像地址,暴露端口让外部机器访问。完整的流程如下:
1)将某个k8s集群的config文件放到本地机器上,放在~/.kube目录下,若没有此目录,则新建
关于config文件,详见https://blog.csdn.net/qq_38196982/article/details/118992641
然后在~/.kube目录下,执行
kubectl get pod
此时,已经访问到集群
2)编写dockerfile
以Nginx为例,dockerfile如下
FROM nginx
RUN echo '<h1>Hello,use dockerfile to build jingxiang!!</h1>' > /usr/share/nginx/html/index.html
3)生成镜像
docker build -t nginx:v4
4)给镜像打标签
docker tag nginx:v4 registry.foundary.zone:8360/nginx:v1
5)推送到仓库
docker push registry.foundary.zone:8360/nginx:v1
这一步需要注意,如果显示server gave HTTP response to HTTPS client,则因为 docker 仓库采用https,docker push时客户端采用的是http。详见https://blog.csdn.net/qq_38196982/article/details/119025853
另一个错误是:你没有权限。一般集群都有自己的仓库,你可以直接push。但如果你第一次使用config访问集群,你很可能没有权限。你需要docker login,输入集群对应仓库的dockerhub账号。不是你个人的docker hub账号
6)创建yaml文件,命名为nginx-deploy.yaml,内容如下
vim nginx-deploy.yaml
apiVersion: apps/v1 ##版本号 ,pod资源
kind: Deployment ##类型/控制器
metadata: ##数据标签
name: nginx-deployment
labels: ##子标签
app: nginx ##业务容器
spec:
replicas: 3 ##副本集
selector: ##选择器
matchLabels: ##匹配标签
app: nginx ##对应上面的业务容器
template: ##模板
metadata:
labels:
app: nginx
spec:
containers: ##容器
- name: nginx ##对应上面的业务容器
image: registry.foundary.zone:8360/nginx:v1 ##使用镜像信息
ports:
- containerPort: 80 ##容器端口信息
---
apiVersion: v1 ##版本号
kind: Service ##服务类型
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort ##端口映射
ports:
- port: 80 ##内部端口
targetPort: 80 ##映射端口
selector: ##选择器/
app: nginx ##选择业务进行发布
有2个需要注意:image位置指明镜像的位置;NodePort意味暴露端口供外部访问;
7)验证yaml文件的正确性
kubectl create -f nginx-deploy.yaml --dry-run
8)执行创建
kubectl create -f nginx-deploy.yaml
9)查看容器对外窗口
kubectl get all
这一步主要是为了查看服务的端口
此处端口为30813.
10)查看集群信息
kubectl cluster-info
此时,外部机器可以通过master节点IP:端口访问服务。此处为10.206.230.25:30813。集群会自动映射到80端口。
更多推荐
所有评论(0)