前言
紧接上文通过rancher部署k8s后,需要对kubectl工具进行熟悉,于是选择了通过k8s部署nginx的方式来更加了解k8s是如何部署和查看应用的
1、查看k8s集群状态
kubectl get nodes#查看节点信息
kubectl get pod -A -o wide #查看pod详细信息
kubectl get all #列出所有资源信息
kubectl get rc,services#列出所有replication controllers和service信息
kubectl describe node nodeName #查看节点详细信息
kubectl describe pod podName -n namespaceName #查看pod详细信息
kubectl logs --tail=10 容器名 -n 命名空间 #查看容器日志
kubectl get deployments -n namespaceName #查询命名空间内的部署
kubectl exec -ti 容器名 -n 命名空间 sh #进入容器
journalctl #用来查询 systemd-journald 服务收集到的日志
kubectl delete namespace namespaceName #删除命名空间
kubectl config set-context --current --namespace=namespaceName #设置默认命名空间
kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f - #重启节点
kubectl delete deployment #删除deployment
kubectl delete pod #删除pod前要先删除deployment
kubectl edit deployment.apps/metrics-server -n kube-system #编辑服务器对应资源,默认为yaml格式
2、创建namespace
vim nginx-namespace.yaml
apiVersion: v1 #类型为Namespace
kind: Namespace #类型为Namespace
metadata:
name: ns-test #命名空间名称
labels:
name: label-test #pod标签
#创建
kubectl create -f nginx-namespace.yaml
#查询
kubectl get namespace
3、创建pod
一般不直接create pod,而是通过controller来创建pod。deployment为其中一种controller
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ns-test
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
#创建
kubectl create -f nginx-deployment.yaml
#查询
kubectl get deployment -n ns-test
或
kubectl get pods -n ns-test
以下为成功:
4、创建service
vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
namespace: ns-test
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
kubectl create -f nginx-service.yaml
kubectl get svc nginx-service -o wide -n ns-test #svc即service
curl http://10.43.239.175
如主机IP需访问
vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
namespace: ns-test
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
type: NodePort
kubectl apply -f nginx-service.yaml
kubectl get svc -o wide
使用主机ip:30080访问