kubernetes
参考教程:https://www.kubernetes.org.cn/3808.html
先删除旧版本docker
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
创建mysql-rc.yaml
apiVersion: v1 kind: ReplicationController metadata: name: mysql labels: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "123456"
yaml的格式非常严格,冒号后面必须加空格,不能使用tab键制表符,必须使用空格
创建rc
kubectl create -f mysql-rc.yaml
查看rc
kubectl get rc
查看pod
kubectl get pods
删除rc
kubectl delete -f mysql-rc.yaml
查看节点
kubectl get nodes
查看node详细信息
kubectl describe node 127.0.0.1
创建一个webapp-rc.yaml
apiVersion: v1 kind: ReplicationController metadata: name: webapp spec: replicas: 2 template: metadata: name: webapp labels: app: webapp spec: containers: - name: webapp image: tomcat ports: - containerPort: 8080
运行
kubectl create -f webapp-rc.yaml
这里一开始运行3个master,默认master不运行pod
这里看到4/2是因为之前开启了node4节点,两个pod都运行在node4上,之后关闭了node4节点
让master也参与运行pod
kubectl taint nodes --all node-role.kubernetes.io/master-
可以看到之前分配在node4上的pod已经运行在node1和node3上了
获取Pod的IP地址
kubectl get pods -l app=webapp -o yaml | grep podIP
可以直接通过这两个Pod的IP地址和端口访问Tomcat服务
curl 10.244.1.2:8080
创建service
kubectl expose rc webapp
查看
kubectl get service
在dashboard查看
访问10.99.120.114:8080
除了使用expose命令,还可以通过配置文件定义service
apiVersion: v1 kind: Service metadata: name: webapp spec: ports: - port: 8081 targetPort: 8080 selector: app: webapp
将service的端口映射到物理机已供集群外部访问
apiVersion: v1 kind: Service metadata: name: webapp spec: type: NodePort ports: - port: 8081 targetPort: 8080 nodePort: 8081 selector: app: webapp
创建一个redis-master
apiVersion: v1 kind: Pod metadata: name: redis-master labels: app: redis-master spec: containers: - name: redis-master image: redis ports: - containerPort: 6379 hostNetWork: true
启动后查看
使用客户端连接测试
DNS
Kubernetes 从 1.3 版本起, DNS 是内置的服务,通过插件管理器 集群插件 自动被启动。
查看所有服务
kubectl get svc --namespace=kube-system
可以看到dns
创建 busybox.yaml 文件,内容如下:
apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox command: - sleep - "3600" imagePullPolicy: IfNotPresent name: busybox restartPolicy: Always
然后,用该文件创建一个 Pod:
kubectl create -f busybox.yaml
等这个Pod运行后执行如下 nslookup 查询:
kubectl exec -ti busybox -- nslookup kubernetes.default
新增一个redis服务
apiVersion: v1 kind: Service metadata: name: redis-master labels: name: redis-master spec: type: NodePort ports: - port: 6380 targetPort: 6379 nodePort: 30002 selector: app: redis-master
创建服务
点击名称可以看到详细
使用客户端连接测试
查看服务
kubectl get services
通过服务名查找
kubectl exec busybox -- nslookup redis-master
查看context
kubectl config view
在浏览器打开https://192.168.112.186:6443/
打开https://192.168.112.186:6443/api/v1 即可看到API接口