一、Kubernetes简述
1.什么是Kubernetes
-
Kubernetes 是一个开源项目,用于统一管理容器化的应用集群。
-
Kubernetes 负责在大规模服务器环境中管理容器组(pod)的扩展、复制、健康,并解决 pod 的启动、负载均衡等问题。
-
上一节中我们使用Docker进行golang镜像的创建和运行,在实际项目中新的镜像越来越多,便需要kubernetes进行统一编排和管理,实现负载均衡和资源调度。
2.搭建Kubernetes
二、简单操作kubernetes
注:这里kubernetes只做简单的尝试,我会在实战项目中具体使用
1.使用上一节Docker的使用&制作Golang微服务镜像并运行中的镜像
1.1. docker login
, 登录自己的Docker公共镜像库dockerhub,登录账号(没有便自行创建)
1.2. 上传自己镜像
-
docker tag
, 首先给自己的镜像打上tag
-
docker push
, 上传镜像到公共镜像库
-
可以在 hub.docker.com/ 中看到上传的镜像
[root@k8s-master ~]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master Ready master 39d v1.15.0 172.20.3.13 <none> CentOS Linux 7 (Core) 3.10.0-1160.36.2.el7.x86_64 docker://18.6.1
k8s-node01 Ready <none> 39d v1.15.0 172.20.3.14 <none> CentOS Linux 7 (Core) 3.10.0-1160.36.2.el7.x86_64 docker://18.6.1
k8s-node02 Ready <none> 39d v1.15.0 172.20.3.15 <none> CentOS Linux 7 (Core) 3.10.0-1160.36.2.el7.x86_64 docker://18.6.1
2.kubernetes使用镜像运行
-
我的k8s
-
practice-pod.yaml
文件的编写,这个是创建pod
practice-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: practice
labels:
app: practice
spec:
containers:
- name: practice
image: caoxunaaa/practice:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
-
practice-svc.yaml
文件的编写,这个是创建上面pod对应的网络,通过selector进行匹配,NodePort类型使外部能访问。
practice-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: practice-svc
labels:
app: practice
spec:
type: NodePort
ports:
- port: 8080
name: practice
targetPort: 8080
nodePort: 30008
protocol: TCP
selector:
app: practice
-
运行
[root@k8s-master practice]# kubectl apply -f practice-pod.yaml
pod/practice created
[root@k8s-master practice]# kubectl apply -f practice-svc.yaml
service/practice-svc created
[root@k8s-master practice]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
practice 2/2 Running 0 2m53s 10.244.2.164 k8s-node01 <none> <none>
[root@k8s-master practice]# kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 39d <none>
practice-svc NodePort 10.1.158.137 <none> 8080:30008/TCP 2m30s app=practice
-
得到结果