查看节点: kubectl get node
创建镜像:kubectl run -i -t 群组的名字 –image=镜像的名字(私有仓库)
kubectl run -i -t test –image=192.168.1.100/yan123/myos:nginx
查看容器信息1:kubectl get deployment
kubectl get pod
显示详细名字: kubectl -n kube-system get deployment //+n kube-system
查看服务:kubectl get service
查看容器运行状态(IP节点等):kubectl get pod -o wide +名称
删除资源:kubectl delete deployment +名称
kubectl delete pod +名称 //删除后会自动重建
进入资源:kubectl exec -it 名称(全称) /bin/bash
kubectl attach yan-775876d67b-dxth9 -c yan -i -t //非交互式
查看日志:kubectl logs 名称 //查看历史操作
kubectl run 命令启动服务
启动2副本以上web服务
kubectl run -r 副本数量 –image=镜像名称:标签
例:kubectl run httpd -r 2 –image=repo1:5000/myos:httpd –port=80 //创建2台httpd服务
service服务
service 会创建一个cluster ip ,这个地址对应资源地址,不管POD怎么变化,service总能找到对应的POD,而且cluster ip保持不变,如果POD有多个容器,service会实现负载均衡。
查看服务:kubectl get service
内部资源访问:cluster-ip是集群分配的服务IP,提供集群内访问
语法:
创建服务service:
kubectl expose 资源类型 资源名称 –port=服务端口 –target-port=容器端口 –name=service的名字
删除服务service:
[root@master ~]#kubectl delete svc httpd-service -n default //删除 httpd-service服务
例如:
[root@master ~]#kubectl expose deployment httpd –port=80 –target-port=80 –name=httpd-service //创建服务:httpd,对外监听80端口
验证高可用:
kubectl run httpd -r 2 –image=repo1:5000/myos:httpd –port=80 //创建2个HTTPD服务
kubectl expose deployment httpd –port=80 –target-port=80 –name=httpd-service //创建服务:httpd
kubectl get service //查看service及IP
kubectl get pod -o wide //查看容器IP
curl http://10.254.101.151 //访问service的ip
kubectl delete pod httpd //删除Pod验证高可用
kubectl get pod -o wide //查看容器IP ,发现自动创建与上次不同容器
curl http://10.254.101.151 //再次访问service的ip,依然可用:
dns插件安装:
a.镜像导入
k8s-dns-kube-dns-amd64,k8s-dns-sidecar-amd64 ,k8s-dns-dnsmasq-nanny-amd64
三个文件导入到私有仓库
b.修改配置Kube-dns
[root@master ~]# vim kube-dns.yaml //详细在最后
33 clusterIP: 10.254.254.253
98 image: repo1:5000/k8s-dns-kube-dns-amd64:1.14.10
128 – –domain=tedu.local.
131 – –kube-master-url=http://192.168.1.25:8080
150 image: repo1:5000/k8s-dns-dnsmasq-nanny-amd64:1.14.10
170 – –server=/tedu.local./127.0.0.1#10053
189 mage: repo1:5000/k8s-dns-sidecar-amd64:1.14.10
202 – –probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.tedu.local.,5,SRV
203 – –probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.tedu.local.,5,SRV
查看:
[root@master ~]# kubectl -n kube-system get pod //查看服务状态
kubectl -n kube-system get service //查看服务IP,端口
c.修改所有node节点kubelet配置文件(node1-5):
[root@node-0003 ~]# vim /etc/kubernetes/kubelet //所有节点操作
添加 –cluster-dns=10.254.254.253 –cluster-domain=tedu.local //与上配置一致
d. 重启:[root@node-0003 ~]# systemctl restart kubelet
验证:[root@master ~]# kubectl delete -f kube-dashboard.yaml
[root@master ~]# kubectl create -f kube-dashboard.yaml //重新创建
[root@master ~]# kubectl -n kube-system get service
[root@master ~]# kubectl -n kube-system describe pod kubernetes-dashboard
验证DNS
[root@master ~]# kubectl get pod //无,确保容器是在创立kube-DNS后创建
[root@master ~]#kubectl run php -r 2 –image=repo1:5000/myos:php-fpm –port=9000 //创建2个PHP容器
[root@master ~]# kubectl run nginx -r 1 –image=repo1:5000/myos:nginx –port=80 //创建1个Nginx容器
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-86c6b5bb6f-g6blt 1/1 Running 1 14h
php-57bf94df94-57w4q 1/1 Running 1 14h
php-57bf94df94-8xjhk 1/1 Running 1 14h
[root@master ~]#kubectl expose deployment php –port=9000 –target-port=9000 –name=php-fpm //创建PHP-fpm的service服务
[root@master ~]# kubectl get service //查看service服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
php-fpm ClusterIP 10.254.218.204 <none> 9000/TCP 15h
[root@master ~]# kubectl exec -it nginx-86c6b5bb6f-g6blt /bin/bash //进入NGINX
[root@nginx-86c6b5bb6f-g6blt html]# ping php-fpm //ping php-fpm,发现能解析
PING php-fpm.default.svc.tedu.local (10.254.218.204) 56(84) bytes of data.
资源对象文件
概念:kubernetes通过pc/rs管理POD,在PC中定义了如何启动POD,如何运行,启动副本等功能,如果我们创建的文件,用其中使用YAML的语法格式描述了上面的信息,这个文件就是我们的资源对象文件
作用:可以创建删除和管理资源对象
kubectl (apply升级更新|create创建资源对象|delete) -f (资源文件*.yaml)
案例:1.创建myos:latest-yaml
[root@master ~]# vim baseos.yaml //创建模板
—
apiVersion: extensions/v1beta1 #当前格式的版本
kind: Deployment #当前创建资源的类型, 当前类型是Deployment
metadata: #当前资源的元数据
name: test-os #当前资源的名字 是元数据必须的项
spec: #是当前Deployment的规格说明
replicas: 1 #指当前创建的副本数量 默认不填 默认值就为‘1’
template: #定义pod的模板
metadata: #当前pod的元数据
labels: #至少顶一个labels标签,可任意创建一个 key:value
app: test_os #标签名
spec: #当前pod的规格说明
containers: #容器
– name: centos #是容器的名字容器名字是必须填写的
image: centos:7.5.1804 #镜像的地址
stdin: true #交互式输入相当于 -I参数
tty: true #打开终端相当于 -t参数
创建: kubectl create -f baseos.yaml
删除: kubectl delete -f baseos.yaml
更新: kubectl apply -f baseos.yaml
在线编辑:kubectl edit deployment test-os //编辑好wq保存
案例:2.创建服务的资源文件
[root@master ~]# vim httpd-service.yaml
apiVersion: v1 #当前的格式
kind: Service #创建资源类型
metadata: #当前资源的元数据
name: web-apache #资源名称
namespace: default #资源的区域
spec: #资源的说明
clusterIP: 10.254.254.110 #资源的IP
ports: #端口
– port: 80 #服务的端口
targetPort: 80 #容器的端口
nodePort: #发布的节点端口
protocol: TCP #协议
selector: #标签选择器
app: httpd #后端服务资源
type: ClusterIP #资源类型
附:php 案例
<pre>
<?PHP
foreach (array(“REMOTE_ADDR”, “REQUEST_METHOD”, “HTTP_USER_AGENT”, “REQUEST_URI”) as $i) {
$arr[$i] = $_SERVER[$i];
}
if($_SERVER[‘REQUEST_METHOD’]==”POST”){
$arr += $_POST;
}else{
$arr += $_GET;
}
print_R($arr);
?>