版本
k8s 1.5
docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
Go version: go1.7.4
Git commit: 88a4867/1.12.6
Built: Mon Jul 3 16:02:02 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
Go version: go1.7.4
Git commit: 88a4867/1.12.6
Built: Mon Jul 3 16:02:02 2017
OS/Arch: linux/amd64
部署etcd
-bash-4.1$ more start.sh
TOKEN=zhangqi-etcd
CLUSTER_STATE=new
NAME_1=zhangqi-151
NAME_2=zhangqi-26
NAME_3=zhangqi-150
HOST_1=192.168.6.151
HOST_2=192.168.6.26
HOST_3=192.168.6.150
CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380
THIS_NAME=${NAME_2}
THIS_IP=${HOST_2}
./etcd --data-dir=data.etcd --name ${THIS_NAME} \
--initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
--advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
--initial-cluster ${CLUSTER} \
--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}
-bash-4.1$ more monitor.sh
export ETCDCTL_API=3
HOST_1=192.168.6.151
HOST_2=192.168.6.26
HOST_3=192.168.6.150
ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379
##./etcdctl --endpoints=$ENDPOINTS member list
./etcdctl --write-out=table --endpoints=$ENDPOINTS endpoint status
#./etcdctl --endpoints=$ENDPOINTS endpoint health
curl -s http://192.168.6.26:2379/v2/keys | /slview/test/zhangqi/jq-linux64
{
"action": "get",
"node": {
"dir": true,
"nodes": [
{
"key": "/syspara",
"dir": true,
"modifiedIndex": 52,
"createdIndex": 52
},
{
"key": "/shconfig",
"dir": true,
"modifiedIndex": 17,
"createdIndex": 17
},
{
"key": "/test",
"dir": true,
"modifiedIndex": 20,
"createdIndex": 20
},
{
"key": "/zy",
"dir": true,
"modifiedIndex": 30,
"createdIndex": 30
}
]
}
}
部署docker搭建私服
#docker私有库
docker run -d -p 5000:5000 --restart=always --name="docker-image" --hostname="docker-image" -v /root/test/docker/image:/tmp/registry -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/registry registry
docker run -d -p 5000:5000 --restart=always --name="docker-image" --hostname="docker-image" -v /root/test/docker/image:/var/lib/registry registry
#pod通信
docker pull docker.io/kubernetes/pause
#存入本地私有库
docker tag f9d5de079539 docker-image:5000/pause-2017:3.0
docker rmi docker-image:5000/pause-2017:3.0
docker tag f9d5de079539 192.168.6.50:5000/pause-2017:3.0
修改私有库ip地址重启docker
docker push 192.168.6.50:5000/pause-2017:3.0
#查看
docker search 192.168.6.50:5000
[root@localhost image]# curl -XGET http://192.168.6.50:5000/v2/pause-2017/tags/list
{"name":"pause-2017","tags":["3.0"]}
[root@localhost image]# curl -XGET http://192.168.6.50:5000/v2/_catalog
{"repositories":["pause-2017"]}
systemctl status docker.service
[root@localhost k8s]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry latest 751f286bc25e 6 weeks ago 33.19 MB
192.168.6.50:5000/kubernetes-bootcamp v1 8fafd8af70e9 13 months ago 211.3 MB
192.168.6.50:5000/pause-2017 3.0 f9d5de079539 3 years ago 239.8 kB
[root@localhost k8s]#
部署k8s的master
##master
./kube-apiserver --address=0.0.0.0 \
--insecure-port=8080 \
--service-cluster-ip-range='10.254.0.0/16' \
--log_dir=/var/log/kube \
--kubelet_port=10250 \
--v=0 \
--logtostderr=true \
--etcd_servers=http://192.168.6.151:2379 \
--allow_privileged=false
./kube-controller-manager --v=0 \
--logtostderr=true \
--log_dir=/var/log/kube \
--machines=192.168.6.51 \
--master=127.0.0.1:8080
./kube-scheduler --master='127.0.0.1:8080' \
--v=0 \
--log_dir=/var/log/kube \
--logtostderr=true
kube-apiserver --address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range='10.254.0.0/16' --log_dir=/root/test/k8s/kube --kubelet_port=10250 --v=0 --logtostderr=false --etcd_servers=http://192.168.6.26:2379 --allow_privileged=false >> /root/test/k8s/kube-apiserver.log 2>&1 &
kube-controller-manager --v=0 --logtostderr=false --log_dir=/root/test/k8s/kube --master='127.0.0.1:8080' >> /root/test/k8s/kube-controller-manager 2>&1 &
kube-scheduler --master='127.0.0.1:8080' --v=0 --log_dir=/root/test/k8s/kube >> /root/test/k8s/kube-scheduler.log 2>&1 &
https://192.168.6.50:6443/healthz
kubectl get componentstatuses
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health": "true"}
#etcd
-bash-4.1$ curl -s http://192.168.6.26:2379/v2/keys | /slview/test/zhangqi/jq-linux64
curl: /usr/local/lib/libidn.so.11: no version information available (required by /usr/local/lib/libcurl.so.4)
{
"action": "get",
"node": {
"dir": true,
"nodes": [
{
"key": "/registry",
"dir": true,
"modifiedIndex": 24587,
"createdIndex": 24587
},
{
"key": "/shconfig",
"dir": true,
"modifiedIndex": 17,
"createdIndex": 17
},
{
"key": "/test",
"dir": true,
"modifiedIndex": 20,
"createdIndex": 20
},
{
"key": "/zy",
"dir": true,
"modifiedIndex": 30,
"createdIndex": 30
},
{
"key": "/syspara",
"dir": true,
"modifiedIndex": 52,
"createdIndex": 52
}
]
}
}
-bash-4.1$ curl -s http://192.168.6.26:2379/v2/keys/registry | /slview/test/zhangqi/jq-linux64
curl: /usr/local/lib/libidn.so.11: no version information available (required by /usr/local/lib/libcurl.so.4)
{
"action": "get",
"node": {
"key": "/registry",
"dir": true,
"nodes": [
{
"key": "/registry/services",
"dir": true,
"modifiedIndex": 24596,
"createdIndex": 24596
},
{
"key": "/registry/clusterrolebindings",
"dir": true,
"modifiedIndex": 24603,
"createdIndex": 24603
},
{
"key": "/registry/events",
"dir": true,
"modifiedIndex": 24610,
"createdIndex": 24610
},
{
"key": "/registry/serviceaccounts",
"dir": true,
"modifiedIndex": 24611,
"createdIndex": 24611
},
{
"key": "/registry/ranges",
"dir": true,
"modifiedIndex": 24587,
"createdIndex": 24587
},
{
"key": "/registry/clusterroles",
"dir": true,
"modifiedIndex": 24588,
"createdIndex": 24588
},
{
"key": "/registry/namespaces",
"dir": true,
"modifiedIndex": 24592,
"createdIndex": 24592
}
],
"modifiedIndex": 24587,
"createdIndex": 24587
}
}
-bash-4.1$ curl -s http://192.168.6.26:2379/v2/keys/registry | ./jq-linux64
curl: /usr/local/lib/libidn.so.11: no version information available (required by /usr/local/lib/libcurl.so.4)
{
"action": "get",
"node": {
"key": "/registry",
"dir": true,
"nodes": [
{
"key": "/registry/ranges",
"dir": true,
"modifiedIndex": 24587,
"createdIndex": 24587
},
{
"key": "/registry/clusterrolebindings",
"dir": true,
"modifiedIndex": 24603,
"createdIndex": 24603
},
{
"key": "/registry/replicasets",
"dir": true,
"modifiedIndex": 27098,
"createdIndex": 27098
},
{
"key": "/registry/pods",
"dir": true,
"modifiedIndex": 27099,
"createdIndex": 27099
},
{
"key": "/registry/clusterroles",
"dir": true,
"modifiedIndex": 24588,
"createdIndex": 24588
},
{
"key": "/registry/namespaces",
"dir": true,
"modifiedIndex": 24592,
"createdIndex": 24592
},
{
"key": "/registry/services",
"dir": true,
"modifiedIndex": 24596,
"createdIndex": 24596
},
{
"key": "/registry/events",
"dir": true,
"modifiedIndex": 24610,
"createdIndex": 24610
},
{
"key": "/registry/serviceaccounts",
"dir": true,
"modifiedIndex": 24611,
"createdIndex": 24611
},
{
"key": "/registry/minions",
"dir": true,
"modifiedIndex": 25942,
"createdIndex": 25942
},
{
"key": "/registry/deployments",
"dir": true,
"modifiedIndex": 27097,
"createdIndex": 27097
}
],
"modifiedIndex": 24587,
"createdIndex": 24587
}
}
#slave
./kube-proxy --logtostderr=false \
--v=0 \
--master=http://192.168.6.50:8080
./kubelet --logtostderr=false \
--v=0 \
--allow-privileged=false \
--log_dir=/var/log/kube \
--address=0.0.0.0 \
--port=10250 \
--hostname_override=192.168.6.51 \
--api_servers=http://192.168.6.50:8080
kube-proxy --logtostderr=false --v=0 --master=http://192.168.6.50:8080 >> /root/test/k8s/kube-proxy.log 2>&1 &
kubelet --logtostderr=false --v=0 --allow-privileged=false --log_dir=/root/test/k8s/kube --address=0.0.0.0 --port=10250 --hostname_override=192.168.6.51 --api_servers=http://192.168.6.50:8080 --pod-infra-container-image=192.168.6.50:5000/pause-2017:3.0 >>/root/test/k8s/kube-kubelet.log 2>&1 &
使用k8s做服务部署
docker pull 192.168.6.50:5000/kubernetes-bootcamp:v1
docker pull jocatalin/kubernetes-bootcamp:v2
docker tag b6556396ebd4 192.168.6.50:5000/kubernetes-bootcamp:v2
#开启服务
kubectl run kubernetes-bootcamp --image=192.168.6.50:5000/kubernetes-bootcamp:v1 --port=8080
kubectl run kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080
kubectl run kubernetes-bootcamp --image=jocatalin/kubernetes-bootcamp:v1 --port=8080
#默认docker.io下载镜像
[root@hadoop1 k8s]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/jocatalin/kubernetes-bootcamp v2 b6556396ebd4 13 months ago 211.3 MB
192.168.6.50:5000/kubernetes-bootcamp v1 8fafd8af70e9 13 months ago 211.3 MB
docker.io/jocatalin/kubernetes-bootcamp v1 8fafd8af70e9 13 months ago 211.3 MB
192.168.6.50:5000/pause-2017 3.0 f9d5de079539 3 years ago 239.8 kB
[root@hadoop1 k8s]#
[root@localhost k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-264884655-wfcfd 1/1 Terminating 0 8m
#删除部署
kubectl delete deployment kubernetes-bootcamp
#进入容器
kubectl exec -ti kubernetes-bootcamp-264884655-wfcfd bash
#部署服务
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
#升级
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=192.168.6.50:5000/kubernetes-bootcamp:v2
#扩展
kubectl scale deployments/kubernetes-bootcamp --replicas=3
#回退
kubectl rollout undo deployments --to-revision=2
#查看ep,多pods启动proxy
kubectl get ep
NAME ENDPOINTS AGE
kubernetes 192.168.6.50:6443 21h
kubernetes-bootcamp 172.17.0.2:8080 13m