K8S的二进制包安装步骤
1.前置条件
1.1 准备3台机器
Master: 192.168.33.181
Sa1: 192.168.33.183
Sa2: 192.168.33.179
1.2 关闭防火墙
所有机器都要关闭防火墙&禁止防火墙开机启动
systemctl stop firewalld.service
systemctl disable firewalld.service
1.3 下载Kubernetes二进制包
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md
2. Master节点的配置
2.1 安装docker
设置yum源
vi /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
安装docker
yum install docker-engine
2.2 安装etcd服务
2.2.1 下载etcd二进制文件
https://github.com/etcd-io/etcd/releases
2.2.2 解压拷贝
解压etcd-v3.3.12-linux-amd64,将etcd和etcdctl文件复制到/usr/bin目录
2.2.3 配置systemd服务文件
vi /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
#在network服务之后启动
After=network.target
[Service]
#启动类型:simple表示ExecStart字段启动的进程为主进程
Type=simple
#指定当前服务的环境参数文件
EnvironmentFile=-/etc/etcd/etcd.conf
WorkingDirectory=/var/lib/etcd/
#定义启动进程时执行的命令
ExecStart=/usr/bin/etcd
#非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
Restart=on-failure
[Install]
WantedBy=multi-user.target
参数意义参考:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
2.2.4 启动服务
重载所有修改过的配置文件
systemctl daemon-reload
systemctl enable etcd.service
创建配置文件指定的workingDirectory路径
mkdir -p /var/lib/etcd/
systemctl start etcd.service
etcdctl cluster-health
2.3 kube-apiserver服务
2.3.1 解压拷贝
解压kubernetes-server-linux-amd64.tar.gz,将kube-apiserver、kube-controller-manager、kube-scheduler以及管理要使用的kubectl二进制命令文件 放到/usr/bin目录
cp kube-apiserver kube-controller-manager kube-scheduler kubectl /usr/bin/
2.3.2 配置systemd服务文件
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
2.3.3 创建目录
mkdir /etc/kubernetes
2.3.4 配置apiserver
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"
参数解析:
--etcd-servers=http://127.0.0.1:2379
etcd的地址,若etcd是集群,则配置集群所有地址,用逗号隔开
--insecure-bind-address=0.0.0.0
aipServer的监听地址,默认为127.0.0.1,若要配置集群,则要设置为0.0.0.0才能被其他主机找到
--insecure-port=8080
apiserver的监听端口
--service-cluster-ip-range=169.169.0.0/16
service的地址范围,用于创建service的时候自动生成或指定serviceIP使用
--service-node-port-range=1-65535