之前公司有让研究istio,研究istio发现需要docker和k8s(kubernetes),硬生生的用windos搭建,大费了周折也搭建成功了,演示一番没用了,今个有时间也自己买了线上的linux服务器,然后用linux搭建K8s。

   不知道大家有没有想过为什么会有K8s出现,为什么k8s和springCloud的功能如此相像,后来一查,有的人说可能慢慢的SC(springCloud)就会淘汰,因为功能基本上大致,但是SC只支持java而k8s可以跨平台,支持多种平台,从这个方面k8s就胜了。

 所以k8s确实是一种浪潮,一种管理各种平台服务的可能性。废话不多说了,开始把

1.安装etcd和kubernetes软件(会自动安装docker)

  yum install -y etcd kubernetes

2.修改docker和k8s的配置文件

2.1 安装成功以后,修改docker命令为 vim /etc/sysconfig/docker 找到OPTIONS修改里边参数为

--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry gcr.io

2.2 修改k8s配置文件命令 vim /etc/kubernetes/apiserver 找到KUBE_ADMISSION_CONTROL参数将ServiceAccount删除就可以了

3.启动所有服务

# systemctl start etcd
# systemctl start docker
# systemctl start kube-apiserver
# systemctl start kube-controller-manager
# systemctl start kube-scheduler
# systemctl start kubelet
# systemctl start kube-proxy

4 部署nginx小示例

kubectl run my-nginx --image=nginx --port=80 #运行nginx
kubectl get pod# 查看pod

 我的状态已经运行了,最开始我的容器一直是在ContainerCreating,这个应该是和docker有关

 

可以用如下命令去查找原因  kubectl describe pod “名称”,会查看到有什么错误

我的错误是用这个网址借鉴解决的,可以给大家一个链接https://blog.csdn.net/jacketyding/article/details/89846934,这个错误解决完记得将之前的nginx pod删除,重新运行nginx的镜像运行

另外状态说明可以查看这个链接 https://www.jianshu.com/p/1120911f92a1

然后继续说回来,将nginx service对外暴露,让其可供外访问

kubectl expose deployment/my-nginx --type="NodePort" --port 80

查看服务的一些信息

 kubectl describe service/my-nginx

linux本机试一下是否运行成功了,以下图片说明运行成功了,nginx搭建好了

curl 172.18.0.2:80

然后线上测试能访问,线上外网是能访问的,但是另一个windows却一直不能访问,原因是没有设置iptables,将iptables设置转发

iptables -P FORWARD ACCEPT

这样就可以访问了

5 docker打包springboot 镜像

5.1 创建文件Dockerfile ,命令为touch Dockerfile,编辑Dockerfile,命令vim Dockerfile (前提是用maven或者其他工具已经打完jar包了哦)

5.2 制作镜像

docker build -t app .

5.3 查看镜像是否存在

docker images

6.k8部署springboot微服务

6.1 创建k8s-app.yaml文件

apiVersion: v1
kind: Service
metadata:
  name: k8s-app
  namespace: default
  labels:
    app: k8s-app
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30002
  selector:
    app: k8s-app

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: k8s-app
  labels:
    app: k8s-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: k8s-app
  template:
    metadata:
      labels:
        app: k8s-app
    spec:
      containers:
      - name: k8s-app
        image: app:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
        livenessProbe:
          httpGet:
            port: 8080
            path: /
            scheme: HTTP
          periodSeconds: 15
          initialDelaySeconds: 30

6.2 创建服务

kubectl apply -f k8s-app.yaml

创建这一步的时候可能会出错,要么是yaml排版问题要么是apiVersion问题,有的apiVersion是不支持的,可以看看命令查看自己支持的apiVersion

kubectl api-versions

我的apiVersion就 extensions/v1beta1好使,其他的都报错我也不明白为什么这样哈哈,有这两个就是服务和容器都创建成功了,可以看下pod是否运行,running的状态就是在运行

我们设置对外访问的端口是30002,发现可以访问了

 

Logo

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

更多推荐