访问集群需要安装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端口。

Logo

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

更多推荐