sky_cheng

导航

 

一、首先制作jdk环境镜像

参考:https://www.cnblogs.com/sky-cheng/p/14215332.html

二、制作jar包镜像

参考:https://www.cnblogs.com/sky-cheng/p/14218164.html

三、在k8s的master节点上创建项目命名空间

[root@master69 kubernetes]# mkdir hl95-notary
[root@master69 kubernetes]# vim hl95-notary/hl95-notary-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: hl95-notary

创建

[root@master69 kubernetes]# kubectl create  -f hl95-notary/hl95-notary-namespace.yaml          
namespace/hl95-notary created
[root@master69 kubernetes]# 

查看namespace

[root@master69 kubernetes]# kubectl get ns
NAME              STATUS   AGE
default           Active   27h
hl95-notary       Active   36s
kube-node-lease   Active   27h
kube-public       Active   27h
kube-system       Active   27h

四、创建deployment

在master节点上编辑hl95-notary-api-deployment.yaml 文件

[root@master69 kubernetes]# vim hl95-notary/hl95-notary-api-deployment.yaml               
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hl95-notary-api-deployment
  namespace: hl95-notary
spec:
  replicas: 2
  selector:
    matchLabels:
      project: hl95-notary
      app: hl95-notary-api
  template:
    metadata:
      labels:
        project: hl95-notary
        app: hl95-notary-api
    spec:
      containers:
        - name: hl95-notary-api
          image: skychengp/hl95-blockchain-notary-api:1.0.0
          workingDir: /home/blockchain/http-api
          command: [ "java" ]
args:
- '-jar'
- 'hl95-blockchain-notary-api-0.0.1-SNAPSHOT.jar' ports:
- containerPort: 8079 volumeMounts: - name: logs mountPath: /home/blockchain/http-api/logs #挂载的容器内目录 volumes: - name: logs #挂载宿主机目录 hostPath: path: /home/blockchain/http-api/logs

创建

[root@master69 kubernetes]# kubectl create -f hl95-notary/hl95-notary-api-deployment.yaml 
deployment.apps/hl95-notary-api-deployment created

查看

[root@master69 kubernetes]# kubectl get deployment -n hl95-notary
NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
hl95-notary-api-deployment   0/2     2            0           64s

ready是0,查看pods

[root@master69 kubernetes]# kubectl get pods -n hl95-notary
NAME                                          READY   STATUS             RESTARTS   AGE
hl95-notary-api-deployment-75f86c74cf-2rgxf   0/1     ImagePullBackOff   0          107s
hl95-notary-api-deployment-75f86c74cf-gltxn   0/1     ImagePullBackOff   0          107s

status为ImagePullOff:镜像拉取失败

查看问题详情

[root@master69 kubernetes]# kubectl describe pods hl95-notary-api-deployment-75f86c74cf-2rgxf -n  hl95-notary
Error from server (NotFound): namespaces "hl95-notary-api-deployment-75f86c74cf-2rgxf" not found
[root@master69 kubernetes]# kubectl describe pods hl95-notary-api-deployment-75f86c74cf-2rgxf -n  hl95-notary               
Name:         hl95-notary-api-deployment-75f86c74cf-2rgxf
Namespace:    hl95-notary
Priority:     0
Node:         redis-02.hlqxt/172.28.5.124
Start Time:   Tue, 05 Jan 2021 15:49:31 +0800
Labels:       app=hl95-notary-api
              pod-template-hash=75f86c74cf
              project=hl95-notary
Annotations:  <none>
Status:       Pending
IP:           10.244.4.5
IPs:
  IP:           10.244.4.5
Controlled By:  ReplicaSet/hl95-notary-api-deployment-75f86c74cf
Containers:
  hl95-notary-api:
    Container ID:  
    Image:         skychengp/hl95-blockchain-notary-api:1.0.0
    Image ID:      
    Port:          8079/TCP
    Host Port:     0/TCP
    Command:
      java -jar hl95-blockchain-notary-api-0.0.1-SNAPSHOT.jar
    State:          Waiting
      Reason:       ImagePullBackOff
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /home/blockchain/http-api/logs from logs (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-td92j (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  logs:
    Type:          HostPath (bare host directory volume)
    Path:          /home/blockchain/http-api/logs
    HostPathType:  
  default-token-td92j:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-td92j
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age                   From                     Message
  ----     ------     ----                  ----                     -------
  Normal   Scheduled  4m27s                 default-scheduler        Successfully assigned hl95-notary/hl95-notary-api-deployment-75f86c74cf-2rgxf to redis-02.hlqxt
  Normal   Pulling    106s (x4 over 4m25s)  kubelet, redis-02.hlqxt  Pulling image "skychengp/hl95-blockchain-notary-api:1.0.0"
  Warning  Failed     87s (x4 over 4m6s)    kubelet, redis-02.hlqxt  Failed to pull image "skychengp/hl95-blockchain-notary-api:1.0.0": rpc error: code = Unknown desc = Error response from daemon: pull access denied for skychengp/hl95-blockchain-notary-api, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
  Warning  Failed     87s (x4 over 4m6s)    kubelet, redis-02.hlqxt  Error: ErrImagePull
  Warning  Failed     62s (x6 over 4m6s)    kubelet, redis-02.hlqxt  Error: ImagePullBackOff
  Normal   BackOff    51s (x7 over 4m6s)    kubelet, redis-02.hlqxt  Back-off pulling image "skychengp/hl95-blockchain-notary-api:1.0.0"

从Events里可以看到详细的事件信息,提示镜像不存在,需要将master节点生成的镜像文件复制到node节点上,或者从私有镜像仓库中拉取,前提是先推送到仓库中

将master节点镜像导出tar包

[root@master69 kubernetes]# docker save -o hl95-notary-api.tar skychengp/hl95-blockchain-notary-api:1.0.0

将tar包复制到node节点上

[root@master69 kubernetes]# scp -P25601 hl95-notary-api.tar root@172.28.5.120:/etc/kubernetes/

在node节点导入镜像

[root@redis-01 kubernetes]# docker load -i hl95-notary-api.tar 

查看镜像

[root@redis-01 kubernetes]# docker images|grep hl95            
skychengp/hl95-blockchain-notary-api                                                                                                      1.0.0               2c07e234fc34        2 hours ago         660MB

删除刚才失败的deployment

[root@master69 kubernetes]# kubectl delete deployment hl95-notary-api-deployment -n hl95-notary
deployment.apps "hl95-notary-api-deployment" deleted

再次查看deployment和pods已经删除

[root@master69 kubernetes]# kubectl get deployment -n hl95-notary               
No resources found in hl95-notary namespace.
[root@master69 kubernetes]# kubectl get pods -n hl95-notary
No resources found in hl95-notary namespace.

再次创建

[root@master69 kubernetes]# kubectl create -f hl95-notary/hl95-notary-api-deployment.yaml 
deployment.apps/hl95-notary-api-deployment created

 查看pods

[root@master69 kubernetes]# kubectl get pods -n hl95-notary
NAME                                          READY   STATUS    RESTARTS   AGE
hl95-notary-api-deployment-79f9559498-bxchq   1/1     Running   0          12s
hl95-notary-api-deployment-79f9559498-p869k   1/1     Running   0          12s
[root@master69 kubernetes]# 

running成功,分别在两个node节点上创建了pod

五、创建service

[root@master69 kubernetes]# vim hl95-notary/hl95-notary-api-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: hl95-notary-api-service
  namespace: hl95-notary
spec:
  selector:
    project: hl95-notary
    app: hl95-notary-api
  ports:
    - name: http-api
      protocol: TCP
      port: 8079
      targetPort: 8079
      nodePort: 8079
  type: NodePort

创建

[root@master69 kubernetes]# kubectl create -f hl95-notary/hl95-notary-api-service.yaml 
The Service "hl95-notary-api-service" is invalid: spec.ports[0].nodePort: Invalid value: 8079: provided port is not in the valid range. The range of valid ports is 30000-32767

报错无效端口,默认是30000-32767,需要修改kube-apiserver.yaml文件

[root@master69 kubernetes]# vim /etc/kubernetes/manifests/kube-apiserver.yaml 

在--service-cluster-ip-range=10.96.0.0/12下面加一行

    - --service-node-port-range=1-65535

保存退出,并重启kubelet服务

[root@master69 kubernetes]# systemctl restart kubelet

再次创建service

[root@master69 kubernetes]# kubectl create -f hl95-notary/hl95-notary-api-service.yaml 
service/hl95-notary-api-service created

查看

[root@master69 kubernetes]# kubectl get svc -n hl95-notary
NAME                      TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
hl95-notary-api-service   NodePort   10.110.180.240   <none>        8079:8079/TCP   25s

访问http://masterip:8079

六、查看pod日志

[root@master69 kubernetes]# kubectl get pods -n hl95-notary -o wide                    
NAME                                          READY   STATUS    RESTARTS   AGE     IP            NODE             NOMINATED NODE   READINESS GATES
hl95-notary-api-deployment-79f9559498-gmrr8   1/1     Running   0          3m29s   10.244.3.12   redis-03.hlqxt   <none>           <none>
hl95-notary-api-deployment-79f9559498-j8qrg   1/1     Running   0          3m29s   10.244.3.13   redis-03.hlqxt   <none>           <none>[root@master69 kubernetes]# kubectl  logs -f hl95-notary-api-deployment-79f9559498-gmrr8 -n hl95-notary

 

posted on 2021-06-30 17:10  sky_cheng  阅读(510)  评论(0编辑  收藏  举报