内容简介:目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能获得最新版本的软件,而所有软件的依赖又不能自己指定,尤其是你的操作系统版本如果低的话,使用 yum 源安装的 Kubernetes 的版本也会受到限制,通常会低于官方很多版本,我安装的时候目前官方版本为使用二进制文件安装,好处是可以安装任意版本的 Kubernetes,对一些新版本新功能追求的同学比较合适,坏处是配置比较复杂,很多软件包因为一些
一、安装方式介绍
1、yum 安装
目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能获得最新版本的软件,而所有软件的依赖又不能自己指定,尤其是你的操作系统版本如果低的话,使用 yum 源安装的 Kubernetes 的版本也会受到限制,通常会低于官方很多版本,我安装的时候目前官方版本为 1.12
,而 yum 源中的版本为 1.5.2
。
2、二进制安装
使用二进制文件安装,好处是可以安装任意版本的 Kubernetes,对一些新版本新功能追求的同学比较合适,坏处是配置比较复杂,很多软件包因为一些原因,我们在大陆是访问不到的。
3、Kubeadm 安装
kubeadm 是 Kubernetes 官方提供的用于快速安装 Kubernetes 集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验 kubeadm 可以学习到 Kubernetes 官方在集群配置上一些新的最佳实践。
这里我们选用第二种方式安装。
二、环境准备
1、软件版本
我们安装的版本基本是目前最新的版本。
软件 | 版本 |
---|---|
kubernetes | v1.12 |
CentOS 7.5 | CentOS Linux release 7.5.1804 |
Docker | v18.09,推荐使用v18.06,这是官方推荐的 |
etcd | 3.3.10 |
flannel | 0.10.0 |
2、节点规划
IP | 角色 | 主机名 |
---|---|---|
172.18.8.200 | k8s master | master.wzlinux.com |
172.18.8.201 | k8s node01 | node01.wzlinux.com |
172.18.8.202 | k8s node02 | node02.wzlinux.com |
节点及网络规划如下:
3、系统配置
关闭防火墙。
systemctl stop firewalld systemctl disable firewalld
配置 /etc/hosts
,添加如下内容。
172.18.8.200 master.wzlinux.com master 172.18.8.201 node01.wzlinux.com node01 172.18.8.202 node02.wzlinux.com node02
关闭SELinux。
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config setenforce 0
关闭swap。
swapoff -a sed -i 's/.*swap.*/#&/' /etc/fstab
配置转发参数。
cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
sysctl --system
4、二进制软件包下载
我们可以下载编译好的二进制文件,也可以下载源码自己编译,这里只讨论二进制的安装方式。在Kubernetes的 Github CHANGELOG日志中可以看到最新的版本号,也可以到 Tag
页面中找到自己需要的版本,我下载的是 V1.12.2 。
上传我们下载的二进制软件包到各节点,并解压在root家目录,查看目录内容。
[root@master ~]# ll kubernetes/server/bin/ total 1821524 -rwxr-xr-x 1 root root 60859975 Oct 24 15:49 apiextensions-apiserver -rwxr-xr-x 1 root root 142923436 Oct 24 15:49 cloud-controller-manager -rw-r--r-- 1 root root 8 Oct 24 15:44 cloud-controller-manager.docker_tag -rw-r--r-- 1 root root 144309760 Oct 24 15:44 cloud-controller-manager.tar -rwxr-xr-x 1 root root 248021112 Oct 24 15:49 hyperkube -rwxr-xr-x 1 root root 54042644 Oct 24 15:49 kubeadm -rwxr-xr-x 1 root root 192781649 Oct 24 15:49 kube-apiserver -rw-r--r-- 1 root root 8 Oct 24 15:44 kube-apiserver.docker_tag -rw-r--r-- 1 root root 194167808 Oct 24 15:44 kube-apiserver.tar -rwxr-xr-x 1 root root 162961401 Oct 24 15:49 kube-controller-manager -rw-r--r-- 1 root root 8 Oct 24 15:44 kube-controller-manager.docker_tag -rw-r--r-- 1 root root 164347392 Oct 24 15:44 kube-controller-manager.tar -rwxr-xr-x 1 root root 57352138 Oct 24 15:49 kubectl -rwxr-xr-x 1 root root 176648680 Oct 24 15:49 kubelet -rwxr-xr-x 1 root root 50330867 Oct 24 15:49 kube-proxy -rw-r--r-- 1 root root 8 Oct 24 15:44 kube-proxy.docker_tag -rw-r--r-- 1 root root 98355200 Oct 24 15:44 kube-proxy.tar -rwxr-xr-x 1 root root 57184656 Oct 24 15:49 kube-scheduler -rw-r--r-- 1 root root 8 Oct 24 15:44 kube-scheduler.docker_tag -rw-r--r-- 1 root root 58570752 Oct 24 15:44 kube-scheduler.tar -rwxr-xr-x 1 root root 2330265 Oct 24 15:49 mounter
这些包都是存储在google的服务器上面,因为众所周知的原因,我们是无法访问的,所以需要各位科学上网才可以获取,不过我可以把我获取的包传到网盘分享给大家。
三、安装master
master节点需要安装的服务有 kube-apiserver
, kube-controller-manager
, kube-scheduler
,所以我们先把需要的二进制文件放到环境变量。
cp /root/kubernetes/server/bin/kube-apiserver /usr/bin/ cp /root/kubernetes/server/bin/kube-controller-manager /usr/bin/ cp /root/kubernetes/server/bin/kube-scheduler /usr/bin/ cp /root/kubernetes/server/bin/kubectl /usr/bin/
1、安装etcd
本文采用二进制安装方法,首先 下载 安装包。
# 下载 wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz # 解压安装 tar xf etcd-v3.3.10-linux-amd64.tar.gz cd etcd-v3.3.10-linux-amd64 cp etcd etcdctl /usr/bin/
创建system启动文件 etcd.service
。
cat <<EOF > /usr/lib/systemd/system/etcd.service [Unit] Description=etcd.service [Service] Type=notify TimeoutStartSec=0 Restart=always WorkingDirectory=/var/lib/etcd EnvironmentFile=-/etc/etcd/etcd.conf ExecStart=/usr/bin/etcd [Install] WantedBy=multi-user.target EOF
创建配置文件。
mkdir -p /var/lib/etcd && mkdir -p /etc/etcd/
cat <<EOF >/etc/etcd/etcd.conf ETCD_NAME=ETCD Server ETCD_DATA_DIR="/var/lib/etcd/" ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 ETCD_ADVERTISE_CLIENT_URLS="http://172.18.8.200:2379" EOF
启动etcd。
systemctl daemon-reload systemctl start etcd.service
查看启动状态。
[root@master ~]# etcdctl cluster-health member 8e9e05c52164694d is healthy: got healthy result from http://172.18.8.200:2379 cluster is healthy
2、安装 kube-apiserver
创建启动文件 /usr/lib/systemd/system/kube-apiserver.service
,修改为如下内容:
[Unit] Description=Kubernetes API Server After=etcd.service Wants=etcd.service [Service] EnvironmentFile=/etc/kubernetes/apiserver ExecStart=/usr/bin/kube-apiserver \ $KUBE_ETCD_SERVERS \ $KUBE_API_ADDRESS \ $KUBE_API_PORT \ $KUBE_SERVICE_ADDRESSES \ $KUBE_ADMISSION_CONTROL \ $KUBE_API_LOG \ $KUBE_API_ARGS Restart=on-failure Type=notify LimitNOFILE=65536 [Install] WantedBy=multi-user.target
创建配置文件。
mkdir /etc/kubernetes
cat <<EOF > /etc/kubernetes/apiserver KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" KUBE_API_PORT="--port=8080" KUBELET_PORT="--kubelet-port=10250" KUBE_ETCD_SERVERS="--etcd-servers=http://172.18.8.200:2379" KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota" KUBE_API_ARGS="" EOF
启动服务。
systemctl daemon-reload systemctl start kube-apiserver.service
查看启动是否成功。
[root@master ~]# netstat -tnlp | grep kube tcp6 0 0 :::6443 :::* LISTEN 11086/kube-apiserve tcp6 0 0 :::8080 :::* LISTEN 11086/kube-apiserve
3、安装kube-controller-manager
创建启动文件 /usr/lib/systemd/system/kube-controller-manager.service
,添加如下内容:
[Unit] Description=Kubernetes Scheduler After=kube-apiserver.service Requires=kube-apiserver.service [Service] EnvironmentFile=-/etc/kubernetes/controller-manager ExecStart=/usr/bin/kube-controller-manager \ $KUBE_MASTER \ $KUBE_CONTROLLER_MANAGER_ARGS Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target
创建配置文件 /etc/kubernetes/controller-manager
。
cat <<EOF > /etc/kubernetes/controller-manager KUBE_MASTER="--master=http://172.18.8.200:8080" KUBE_CONTROLLER_MANAGER_ARGS=" " EOF
启动服务。
systemctl daemon-reload systemctl start kube-controller-manager.service
验证服务状态。
[root@master ~]# netstat -lntp | grep kube-controll tcp6 0 0 :::10252 :::* LISTEN 11131/kube-controll tcp6 0 0 :::10257 :::* LISTEN 11131/kube-controll
4、安装kube-scheduler
创建启动文件 /usr/lib/systemd/system/kube-scheduler.service
,添加如下内容:
[Unit] Description=Kubernetes Scheduler After=kube-apiserver.service Requires=kube-apiserver.service [Service] User=root EnvironmentFile=/etc/kubernetes/scheduler ExecStart=/usr/bin/kube-scheduler \ $KUBE_MASTER \ $KUBE_SCHEDULER_ARGS Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target
创建配置文件 /etc/kubernetes/scheduler
。
cat <<EOF > /etc/kubernetes/scheduler KUBE_MASTER="--master=http://172.18.8.200:8080" KUBE_SCHEDULER_ARGS="--logtostderr=true --log-dir=/var/log/kubernetes --v=2" EOF
启动服务。
systemctl daemon-reload systemctl start kube-scheduler.service
验证服务状态。
[root@master ~]# netstat -lntp | grep kube-schedule tcp6 0 0 :::10251 :::* LISTEN 11178/kube-schedule
使用 kubectl 查看状态。
[root@master ~]# kubectl get cs NAME STATUS MESSAGE ERROR etcd-0 Healthy {"health":"true"} controller-manager Healthy ok scheduler Healthy ok
四、安装node节点(node01为例)
node节点需要安装的服务有 docker
, kubelet
, kube-prox
, flannel
,所以我们先把需要的二进制文件放到环境变量。
cp /root/kubernetes/server/bin/kubelet /usr/bin/ cp /root/kubernetes/server/bin/kube-proxy /usr/bin/
1、安装docker-ce
我们使用最新版的docker,此时 docker 官方的版本为18.09,所以我们需要配置官方yum源。
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -P /etc/yum.repos.d/
yum install docker-ce -y
配置加速器。
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://hdi5v8p1.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload
2、安装 kube-proxy 服务
创建启动文件 /usr/lib/systemd/system/kube-proxy.service
,添加如下内容:
[Unit] Description=Kubernetes Kube-Proxy Server Documentation=https://github.com/GoogleCloudPlatform/kubernetes After=network.target [Service] EnvironmentFile=/etc/kubernetes/config EnvironmentFile=/etc/kubernetes/proxy ExecStart=/usr/bin/kube-proxy \ $KUBE_LOGTOSTDERR \ $KUBE_LOG_LEVEL \ $KUBE_MASTER \ $KUBE_PROXY_ARGS Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target
创建配置目录,并添加配置文件 /etc/kubernetes/proxy
。
mkdir -p /etc/kubernetes
cat <<EOF > /etc/kubernetes/proxy KUBE_PROXY_ARGS="" EOF
cat <<EOF > /etc/kubernetes/config KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow_privileged=false" KUBE_MASTER="--master=http://172.18.8.200:8080" EOF
启动服务。
systemctl daemon-reload systemctl start kube-proxy.service
查看启动状态。
[root@node01 ~]# netstat -lntp | grep kube-proxy tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 12273/kube-proxy tcp6 0 0 :::10256 :::* LISTEN 12273/kube-proxy
3、安装 kubelete 服务
创建启动文件 /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
mkdir -p /var/lib/kubelet
创建配置文件 /etc/kubernetes/kubelet
,新增如下内容:
KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_HOSTNAME="--hostname-override=172.18.8.201" KUBELET_API_SERVER="--api-servers=http://172.18.8.200:8080" KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=reg.docker.tb/harbor/pod-infrastructure:latest" KUBELET_ARGS="--enable-server=true --enable-debugging-handlers=true --fail-swap-on=false --kubeconfig=/var/lib/kubelet/kubeconfig"
创建配置文件 /var/lib/kubelet/kubeconfig
,增加如下内容:
apiVersion: v1 kind: Config users: - name: kubelet clusters: - name: kubernetes cluster: server: http://172.18.8.200:8080 contexts: - context: cluster: kubernetes user: kubelet name: service-account-context current-context: service-account-context
启动kubelet。
systemctl daemon-reload systemctl start kubelet.service
查看启动情况。
[root@node01 ~]# netstat -tnlp | grep kubelet tcp 0 0 127.0.0.1:43228 0.0.0.0:* LISTEN 12658/kubelet tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 12658/kubelet tcp6 0 0 :::10250 :::* LISTEN 12658/kubelet tcp6 0 0 :::10255 :::* LISTEN 12658/kubelet
4、配置flannel网络
从github官网下载最新版本。
wget https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz tar xf flannel-v0.10.0-linux-amd64.tar.gz cp flanneld /usr/bin/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Kubernetes v1.12 二进制部署集群
- Kubernetes v1.12 二进制部署集群(HTTPS+RBAC)
- CentOS7.5 Kubernetes V1.13(最新版)二进制部署集群
- 二进制手表
- 二进制状态码
- Cocoapods 二进制
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Django 1.0 Template Development
Scott Newman / Packt / 2008 / 24.99
Django is a high-level Python web application framework designed to support the rapid development of dynamic websites, web applications, and web services. Getting the most out of its template system a......一起来看看 《Django 1.0 Template Development》 这本书的介绍吧!