一 、集群情况如下,master作为k8s的主节点,在slave1上搭建docker的私库
Master |
192.168.235.128 |
etcd、kube-apiserver、kube-controller-manager、 kubescheduler、docker |
slave1 |
192.168.235.129 |
kube-proxy、kubelet、docker、docker私库 |
slave2 |
192.168.235.131 |
kube-proxy、kubelet、docker |
二、配置
1、每个节点上关闭防火墙
(1)关闭防火墙
systemctl stop firewalld.service
(2)禁止firewall开机启动
systemctl disable firewalld.service
(3)查看默认防火墙状态(关闭后显示not running ,开启后显示 running)
firewall-cmd –state
2、每个节点上修改权限和建立文件夹
(1)sudo chmod –R +777 /opt
(2)sudo chmod –R +777 /usr/bin/
(3)mkdir /opt/k8s
3、每个节点上配置docker
(1)设置yum源
拷贝“每个节点”文件夹下/etc/yum.repos.d/docker.repo中的docker.repo文件到/etc/yum.repos.d/目录
(2)安装docker
yum install docker-engine
(3)安装后查看docker版本
docker –v
(4)是否需要设置国内镜像??
4、在slave1上配置docker私服
(1)docker pull registry
(2)配置国内源和设置私服信赖
拷贝“slave节点”文件夹下文件夹内的daemon.json到slave1的/etc/docker/目录下。(文件中需要配置私服的ip)
(3)重启docker并设置开机启动
systemctl restart docker
systemctl enable docker
(4)启动私服
docker run -di --name=registry -p 5000:5000 registry
(5)提交镜像到私服
docker pull kubernetes/pause
docker tag docker.io/kubernetes/pause:latest 192.168.126.143:5000/google_containers/pauseamd64.3.0
docker push 192.168.126.143:5000/google_containers/pause-amd64.3.0
(6)查看是否提交成功
http://192.168.235.129:5000/v2/_catalog
5、在master上配置etcd
(1)拷贝“master节点”文件夹etcd-v3.3.9-linux-amd64.tar到/opt/k8s并解压,tar -xzvf etcd-v3.3.9-linux-amd64.tar,之后将解压目录内的etcd和etcdctl复制到/usr/bin目录
(2)拷贝“master节点”中的etcd.service 文件到/usr/lib/systemd/system/,并创建目录mkdir -p /var/lib/etcd/
(3)启动与测试etcd服务
systemctl daemon-reload
systemctl enable etcd.service
systemctl start etcd.service
etcdctl cluster-health
6、在master上配置kube-apiserver
(1)拷贝“每个节点”文件夹kubernetes-server-linux-amd64.tar到/opt/k8s并解压,tar -xzvf kubernetes-server-linux-amd64.tar,之后将/opt/k8s/kubernetes/server/bin目录下的kube-apiserver kube-controller-manager kube-scheduler kubectl复制到/usr/bin目录
cd /opt/k8s/kubernetes/server/bin
cp kube-apiserver kube-controller-manager kube-scheduler kubectl /usr/bin/
(2)拷贝“master节点”文件夹中的kube-apiserver.service文件到/usr/lib/systemd/system/
(3)创建目录:mkdir /etc/kubernetes并拷贝“master节点”文件夹中的apiserver文件到/etc/kubernetes
7、在master上配置kube-controller-manager
(1)拷贝“master节点”文件夹中的kube-controller-manager.service文件到/usr/lib/systemd/system/
(2)拷贝“master节点”文件夹中的controller-manager文件到/etc/kubernetes/(文件中需要设置—master为主节点的ip地址)
8、在master上配置kube-scheduler
(1)拷贝“master节点”文件夹中的kube-scheduler.service文件到/usr/lib/systemd/system/
(2)拷贝“master节点”文件夹中的scheduler文件到/etc/kubernetes/(文件中需要设置—master为主节点的ip地址)
9、在slave1和slave2上配置kubelet
(1)拷贝“每个节点”文件夹kubernetes-server-linux-amd64.tar到/opt/k8s并解压,tar -xzvf kubernetes-server-linux-amd64.tar,之后将/opt/k8s/kubernetes/server/bin目录下的kubelet、kube-proxy复制到/usr/bin目录
cd /opt/k8s/kubernetes/server/bin
cp kubelet kube-proxy /usr/bin/
(2)拷贝“slave节点”文件夹中的kubelet.service文件到/usr/lib/systemd/system/并创建文件sudo chmod -R +777 /var/lib
mkdir -p /var/lib/kubelet
(3)创建/ect/kubernetes目录mkdir /ect/kubernetes并拷贝“slave节点”文件夹中的kubelet文件到/ect/kubernetes(文件中需要设置--hostname-override为本机的ip地址)
(4)拷贝“slave节点”文件夹中的kubeconfig文件到/ect/kubernetes(文件中需要设置server为master的ip地址)
10、在slave1和slave2上配置kube-proxy
(1)拷贝“slave节点”文件夹中的kube-proxy.service文件到/usr/lib/systemd/system/
(2)拷贝“slave节点”文件夹中的proxy文件到/ect/kubernetes(文件中需要设置--master为master的ip地址)
11、master启动
完成以上配置后,按顺序启动服务
systemctl daemon-reload
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl start kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl start kube-scheduler.service
检查每个服务的健康状态:
systemctl status kube-apiserver.service
systemctl status kube-controller-manager.service
systemctl status kube-scheduler.service
12、slave启动
systemctl daemon-reload
systemctl enable kubelet
systemctl start kubelet
systemctl status kubelet
systemctl enable kube-proxy
systemctl start kube-proxy
systemctl status kube-proxy
13、测试
(1)拷贝“master节点”文件夹下的nginx-rc.yaml和nginx-svc.yaml到/opt/k8s/ 文件夹中
(2)提交rc和service描述文件,创建服务
kubectl create -f nginx-rc.yaml
kubectl create -f nginx-svc.yaml
(3)查看当前命名空间下的pod
kubectl get pods
(4)查看所有容器列表
kubectl get all
14、更多细节请参考其余四个文件。
15、kubectl get pods时no resource found的问题
(1)在slave节点上修改/etc/kubernetes/kubelet配置为KUBELET_ARGS="--pod_infra_container_image=192.168.126.143:5000/google_containers/pauseamd64.3.0"(和slave1上私服提交的镜像相对应,ip为私服所在slave1的ip)
(2)在master节点上修改/etc/kubernetes/apiserver,找到KUBE_ADMISSION_CONTROL,去掉SecurityContextDeny,ServiceAcc
ount
注:直接拷贝文件过去应该是已经修改好的,应该是不需要设置,这里写出来是为了注意一下。