1. 使用命令行创建服务
创建服务:会创建一个deployment,若干个pod
kubectl run xxx --image=yyy 其他选项 # xxx为服务名(自己起),yyy为镜像名
kubectl run my-nginx --image=nginx --port=80
# 或者
kubectl run my-nginx --image=nginx --replicas=2 --port=80
kubectl get pod # 查看pod
kubectl get svc # 查看service
另外一种创建方式:
kubectl create xxx yyy --image=zzz # 创建名为yyy的xxx类型应用,镜像为zzz。
# 例
kubectl create deployment http --image=katacoda/docker-http-server:latest
查看每种类型(如pod,deployment)的个数信息:
kubectl get xxx -n namespace # xxx 代表pod、deployment等。-n指定命名空间,默认default
# 例
kubectl get pod
# 查看更详细的信息
kubectl get xxx -o wide
查看服务详细信息:
kubectl describe xxx yyy # xxx是pod、svc、deployment等,yyy是相应的名称
# 例
kubectl describe pod my-nginx
扩展或者收缩pod数量:
kubectl scale --replicas=3 deployment my-nginx
kubectl scale deploy/pingpong --replicas 8
暴露服务:
暴露deployment之类的会自动生成对应的service。
kubectl expose xxx/yyy --type="NodePort" --port ??? # 使用NodePort暴露服务
例子:
kubectl expose replicationcontroller/mysql --type="NodePort" --port 3306
此时mysql已经启动了,可以使用mysql命令连接到该数据库。可以通过两种ip访问该mysql。
1. 在创建该服务的机器上:10.254.231.204:3306
2. 其他与该机器可以ping通的机器:本机ip:32719
删除服务:
kubectl delete deployment my-nginx
查看pod部署在哪台机器上:
如果pod部署在本机器上,那么执行如下命令,输出不为空。
docker ps |grep nginx # nginx替换为你自己的pod名字
2. 使用yaml文件创建服务
1. 创建mysql.yaml文件(ReplicationController类型):
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: docker.io/mysql:5.6.40
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
2. 启动服务
kubectl create -f mysql.yaml
更新服务:先修改对应的yaml文件,然后执行
kubectl apply -f xxx.yaml
删除服务:
kubectl delete -f xxx.yaml