kubectl是一个用于操作kubernetes集群的命令行接口,通过利用kubectl的各种命令可以实现各种功能,是在使用kubernetes中非常常用的工具。
(一)pod
对Pod的创建可以通过Yaml或Json格式的配置文件来完成。关于Yaml或Json中都能写哪些参数,参考官网http://kubernetes.io/docs/user-guide/pods/multi-container/,其中YAML( Ain't Markup Language),另一种标记语言。
编写yaml文件
apiVersion: v1
kind: Pod
metadata:
name: php-test
labels:
name: php-test
spec:
containers:
- name: php-test
image: 192.168.174.131:5000/php-base:1.0
env:
- name: ENV_TEST_1
value: env_test_1
- name: ENV_TEST_2
value: env_test_2
ports:
- containerPort: 80
hostPort: 80
创建pod
kubectl create -f ./php-pod.yaml
查看pod
#kubectl get pods
#kubectl get pod php-test -o wide
#kubectl describe pod php-test
[root@localhost k8s]# kubectl get pod php-test -o wide
NAME READY STATUS RESTARTS AGE NODE
php-test 1/1 Running 0 3m 192.168.174.130
[root@localhost k8s]#
验证
登入到容器实际所在的机器上验证下:
192.168.174.130
执行
sudo docker ps
可以看到新创建的pod,发现有2个容器,一个对应的镜像是php-base,一个对应的镜像是kubernetes/pause,它是Netowrk Container,每启动一个Pod都会附加启动这样一个容器,它的作用就只是简单的等待,设置Pod的网络。
Web端验证
php-base中php有添加了个info.php页面,通过浏览器访问http://192.168.174.130/info.php,发现容器正常工作,说明pod没问题。
http://192.168.174.130/info.php
kubectl delete pod NAME
举例:
kubectl delete pod php-test
(二)RC
编写YAML文件
php-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: php-controller
labels:
name: php-controller
spec:
replicas: 2
selector:
name: php-test-pod
template:
metadata:
labels:
name: php-test-pod
spec:
containers:
- name: php-test
image: 192.168.174.131:5000/php-base:1.0
env:
- name: ENV_TEST_1
value: env_test_1
- name: ENV_TEST_2
value: env_test_2
ports:
- containerPort: 80
创建
kubectl create -f php-controller.yaml
查询
# kubectl get rc
# kubectl get rc php-controller
# kubectl describe rc php-controller
删除
#kubectl delete -f php-controller.yaml
#会删除rc,也会删除rc下的所有pod
#kubectl delete rc rcName
#删除rc,但是pod不会收到影响
(三)Service
编写YAML文件
php-service.yaml
apiVersion: v1
kind: Service
metadata:
name: php-service
labels:
name: php-service
spec:
ports:
- port: 8081
targetPort: 80
protocol: TCP
selector:
name: php-test-pod
创建
kubectl create -f php-service.yaml
查询
kubectl get service
删除
kubectl delete service php-service
(四)区别
本文只列出了简单的使用,里面还有很多负责的使用,比如balance等后续再介绍。可以注意到三者的YAML,主要是通过kind来区分的。