操作系统:Linux Centos
| 主机名 | 安装的软件 |
|---|---|
| k8s-master | kube-apiserver、kube-controller-manager、kube-scheduler |
| k8s-node-1 | kubelet、kube-proxy、docker |
| k8s-node-2 | kubelet、kube-proxy、docker |
链接:https://pan.baidu.com/s/1e2KCTnnU0dy6y6zA9vlsLw 提取码:qi9j
第一步:解压缩lrzsz-0.12.20包;
tar zxvf lrzsz-0.12.20.tar.gz
第二步:配置安装路径;
cd lrzsz-0.12.20/ ./configure --prefix=/usr/local/lrzsz
第三步:编译和安装;
make & make install
第四步:创建软链接;
cd /usr/bin ln -s /usr/local/lrzsz/bin/lrz rz ln -s /usr/local/lrzsz/bin/lsz sz1.3 在Node节点上安装Docker
链接:https://pan.baidu.com/s/1gHKUMyDohAeBDF0JCWKZJA 提取码:ua6g
第一步:安装docker依赖包;
yum localinstall audit-libs-python-2.7.6-3.el7.x86_64.rpm -y yum localinstall checkpolicy-2.5-4.el7.x86_64.rpm -y yum localinstall libcgroup-0.41-13.el7.x86_64.rpm -y yum localinstall libsemanage-python-2.5-8.el7.x86_64.rpm -y yum localinstall libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm -y yum localinstall python-IPy-0.75-6.el7.noarch.rpm -y yum localinstall setools-libs-3.3.8-1.1.el7.x86_64.rpm -y yum localinstall policycoreutils-python-2.5-17.1.el7.x86_64.rpm -y yum localinstall container-selinux-2.19-2.1.el7.noarch.rpm -y yum localinstall docker-ce-17.12.0.ce-1.el7.centos.x86_64.rpm -y
第二步:编辑/etc/docker/daemon.json文件;
{
"insecure-registries":[],
"hosts": ["unix:///var/run/docker.sock"],
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"],
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "10"
},
"live-restore": true
}
第三步:重启一下docker服务;
systemctl daemon-reload systemctl restart docker二、部署master节点 2.1 安装etcd
链接:https://pan.baidu.com/s/1mlC0oOQ1z6Ddu8fbyHcEGQ 提取码:teqx
第一步:解压缩etcd-v3.3.9-linux-amd64.tar.gz;
tar zxvf etcd-v3.3.9-linux-amd64.tar.gz
第二步:解压后将etcdctl、etcd复制/usr/bin目录下;
cd etcd-v3.3.9-linux-amd64 mv etcdctl etcd /usr/bin
第三步:编辑/usr/lib/systemd/system/etcd.service文件;
[Unit] Description=Etcd Server After=network.target [Service] Type=notify EnvironmentFile=-/etc/etcd/etcd.conf WorkingDirectory=/var/lib/etcd/ ExecStart=/usr/bin/etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2389 Restart=on-failure [Install] WantedBy=multi-user.target
第四步:启动etcd服务;
systemctl daemon-reload systemctl start etcd systemctl status etcd systemctl enable etcd
第五步:检查etcd集群状态;
etcdctl cluster-health2.2 安装k8s
链接:https://pan.baidu.com/s/1bL5w5Z_QGp-dvnoQeaNX7Q 提取码:dr3c
在k8s-master节点上安装K8S的步骤:
第一步:解压缩kubernetes-server-linux-amd64.tar.gz;
第二步:进入/kubernetes/server/bin目录,将kube-apiserver、kube-controller-manager、kube-scheduler、kubectl执行文件复制到/usr/bin目录下;
第三步:配置kube-apiserver、kube-controller-manager、kube-scheduler服务;
- 定义kube-apiserver服务:
vi /usr/lib/systemd/system/kube-apiserver.service [Unit] Description=Kubernetes API Server documentation=https://github.com/kubernetes/kubernetes After=etcd.service Wants=etcd.service [Service] EnvironmentFile=/etc/kubernetes/apiserver ExecStart=/usr/bin/kube-apiserver $KUBE_API_ARGS Restart=on-failure Type=notify [Install] WantedBy=multi-user.target
- 定义kube-apiserver的参数配置信息:
mkdir /etc/kubernetes vi /etc/kubernetes/apiserver KUBE_API_ARGS="--storage-backend=etcd3 --etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range=169.169.0.0/16 --service-node-port-range=1-65535 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,DefaultStorageClass,ResourceQuota --logtostderr=true --log-dir=/var/log/kubernetes --v=2"2.2.2 配置kube-controller-manager
- 定义kube-controller-manager服务:
vi /usr/lib/systemd/system/kube-controller-manager.service [Unit] Description=Kubernetes Controller Manager documentation=https://github.com/GoogleCloudPlatform/kubernetes After=kube-apiserver.service Requires=kube-apiserver.service [Service] EnvironmentFile=-/etc/kubernetes/controller-manager ExecStart=/usr/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target
- 定义kube-controller-manager的参数配置信息:
vi /etc/kubernetes/controller-manager KUBE_CONTROLLER_MANAGER_ARGS="--master=http://k8s-master:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"2.2.3 配置kube-scheduler
- 定义kube- scheduler服务:
vi /usr/lib/systemd/system/kube-scheduler.service [Unit] Description=Kubernetes Scheduler documentation=https://github.com/GoogleCloudPlatform/kubernetes After=kube-apiserver.service Requires=kube-apiserver.service [Service] EnvironmentFile=-/etc/kubernetes/scheduler ExecStart=/usr/bin/kube-scheduler $KUBE_SCHEDULER_ARGS Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target
- 定义kube-scheduler的参数配置信息:
vi /etc/kubernetes/scheduler KUBE_SCHEDULER_ARGS="--master=http://k8s-master:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"
服务配置完成后,启动所有服务,并设置开机自启动:
systemctl daemon-reload systemctl start kube-apiserver kube-controller-manager kube-scheduler systemctl status kube-apiserver kube-controller-manager kube-scheduler systemctl enable kube-apiserver kube-controller-manager kube-scheduler三、部署node节点 3.1 安装k8s
在node节点上部署k8s也是按照下面三个步骤:
第一步:解压缩kubernetes-server-linux-amd64.tar.gz;
第二步:2) 进入将kubernetes/server/bin目录,将kubelet、kube-proxy执行文件复制到/usr/bin目录下;
第三步:3) 配置kubelet、kube-proxy服务;
- 定义kubelet服务:
vi /usr/lib/systemd/system/kubelet.service [Unit] Description=Kubernetes Kubelet Server documentation=https://github.com/GoogleCloudPlatform/kubernetes After=docker.service Requires=docker.service [Service] WorkingDirectory=/var/lib/kubelet EnvironmentFile=-/etc/kubernetes/kubelet ExecStart=/usr/bin/kubelet $KUBELET_ARGS Restart=on-failure KillMode=process [Install] WantedBy=multi-user.target
- 定义kubelet的参数配置信息:
mkdir -p /var/lib/kubelet mkdir -p /etc/kubernetes vi /etc/kubernetes/kubelet KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --hostname-override=k8s-node-1 --logtostderr=true --log-dir=/var/log/kubernetes --v=2 --fail-swap-on=false"
上面--hostname-override参数指定当前node节点所在主机IP地址或主机名。
- 配置kubelet连接apiserver的参数信息:
vi /etc/kubernetes/kubeconfig
apiVersion: v1
kind: Config
clusters:
- cluster:
server: http://k8s-master:8080
name: local
contexts:
- context:
cluster: local
name: mycontext
current-context: mycontext
3.1.2 配置kube-proxy
- 定义kube-proxy服务:
vi /usr/lib/systemd/system/kube-proxy.service [Unit] Description=Kubernetes Kube-proxy Server documentation=https://github.com/GoogleCloudPlatform/kubernetes After=network.service Requires=network.service [Service] EnvironmentFile=/etc/kubernetes/proxy ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS Restart=on-failure LimitNOFILE=65536 KillMode=process [Install] WantedBy=multi-user.target
- 定义kube-proxy的参数配置信息:
vi /etc/kubernetes/proxy KUBE_PROXY_ARGS="--master=http://k8s-master:8080 --hostname-override=k8s-node-1 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"
上面--hostname-override参数指定当前node节点所在主机IP地址或主机名。
所有服务配置完成后,启动所有服务,并设置开机自启动:
systemctl daemon-reload systemctl start kubelet kube-proxy systemctl status kubelet kube-proxy systemctl enable kubelet kube-proxy3.2 集群健康检查
在master节点上执行命令:
因为项目启动时候需要jdk环境,所以需要在node节点上提前准备好centos7-oraclejdk8.tar镜像。
cd /root/k8s/imags/ docker load < centos7-oraclejdk8.tar docker images docker tag [镜像ID] centos7-orcalejdk8:v1
注意:执行docker load命令可能会引起下面错误:
可以改为以下命令:
cat [镜像压缩包] | docker import – [image_name:tag]4.2 pause-amd64
链接:https://pan.baidu.com/s/1fWeUr7SQ4qPaijlCDs8vhw 提取码:37h5
pause-amd64是Kubernetes基础设施的一部分,用于实现Kubernetes集群里pod之间的网络通讯,所以需要在node节点上安装pause-amd64镜像。
docker load < pause-amd64.tar docker images docker tag [镜像ID] gcr.io/google_containers/pause-amd64:3.0
执行效果:
值得注意的是,上面gcr.io/google_containers/pause-amd64镜像名称不能够是其他名称。
1)先准备一个web项目,然后将其打包,并上传到k8s-node-1和k8s-node-2节点的某个目录下。
2)在该目录下新建Dockerfile文件,文件内容如下:
FROM centos7-orcalejdk8:v1
ENV CSMBP_SLEEP 0
ADD *.war /app.war
RUN sh -c 'touch /app.war'
VOLUME /tmp
EXPOSE 8081
CMD echo "The application will start in ${CSMBP_SLEEP}s..." &&
sleep ${CSMBP_SLEEP} &&
java -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8 -jar /app.war
上面EXPOSE参数指定将web应用的8081端口和主机的8081端口进行映射,这样客户端就能够通过该端口访问web服务。
3)执行docker build命令打包镜像:
docker build -t [镜像名:版本号] .
4)编写项目的部署文件:
apiVersion: v1
kind: ReplicationController
metadata:
name: web-rc
spec:
replicas: 1
selector:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: 镜像名:版本号
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8081
---
apiVersion: v1
kind: Service
metadata:
name: web-svc
spec:
selector:
app: web
type: NodePort
ports:
- port: 8081
targetPort: 8081
nodePort: 30081
5)执行部署操作:
kubectl apply –f web.yaml
到目前为止,我们的K8S基础环境搭建已经完成。接下来是K8S环境相关插件的安装(私有仓库、仪表盘等等)。



