前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在centos7上搭建k8s1.9.9

在centos7上搭建k8s1.9.9

作者头像
没有故事的陈师傅
发布2019-07-28 13:53:20
7690
发布2019-07-28 13:53:20
举报
文章被收录于专栏:运维开发故事运维开发故事

#! /bin/bash

# 在centos7上手动安装k8s1.9.9参考#https://www.cnblogs.com/peterinblog/p/8124746.html

# 二进制软件下载地址:https://github.com/coreos/etcd/releases #https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md

# https://github.com/coreos/etcd/releases

# 本次采用master-worker一个主节点和一个工作节点 master:192.168.29.102 #worker:192.168.29.103

# 对于基础环境,比如配置本地yum、关闭防火墙或者开放相关端口、SELINUX这些事先需要准备好。

# master 都是用的root权限,所以没注意权限的问题

# etcd需要采用奇数个节点,因需通过选举产升leader

# 1、下载文件

mkdir /data && cd /data

wget https://github.com/coreos/etcd/releases/download/v3.3.9/etcd-v3.3.9-linux-amd64.tar.gz # master

wget https://dl.k8s.io/v1.9.9/kubernetes-server-linux-amd64.tar.gz #master

# wget https://dl.k8s.io/v1.9.9/kubernetes-node-linux-amd64.tar.gz # worker

# 2、解压etcd并移动文件

tar -zxvf etcd-v3.3.9-linux-amd64.tar.gz && etcd-v3.3.9-linux-amd64

mv etcd* /usr/bin

# 3、etcd配置文件

mkdir /etc/etcd

cat <<EOF >>/etc/etcd/etcd.conf

ETCD_NAME=ansible-k8s2

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_DATA_DIR="/var/lib/etcd/"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.29.102:2379"

EOF

# 4、解压k8s文件并移动文件至/usr/bin

tar -zxvf kubernetes-server-linux-amd64.tar.gz && cd kubernetes/server/bin/

mv kube-apiserver kube-controller-manager kube-scheduler kube-proxy kubelet kubectl /usr/bin

# 5、k8s相关配置文件

mkdir /etc/kubernetes && cd /etc/kubernetes

# apiserver

cat <<EOF >>apiserver

#

# The following values are used to configure the kube-apiserver

#

# The address on the local server to listen to.

#KUBE_API_ADDRESS="--address=0.0.0.0"

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

# The port on the local server to listen on.

KUBE_API_PORT="--port=8080"

# Port minions listen on

#KUBELET_PORT="--kubelet-port=10250"

# Comma separated list of nodes in the etcd cluster

KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.29.102:2379"

# Address range to use for services

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=192.168.4.0/24"

# default admission control policies

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"

# Add your own!

KUBE_API_ARGS=""

EOF

# config

cat <<EOF >>config

KUBE_LOGTOSTDERR="--logtostderr=true"

KUBE_LOG_LEVEL="--v=0"

KUBE_ALLOW_PRIV="--allow-privileged=false"

KUBE_MASTER="--master=http://192.168.29.102:8080"

EOF

# controller-manager

cat <<EOF >>controller-manager

KUBE_CONTROLLER_MANAGER_ARGS=""

EOF

# scheduler

cat <<EOF >>scheduler

KUBE_SCHEDULER_ARGS=""

EOF

# 6、etcd k8s 启动文件

# etcd

cat <<EOF >>/lib/systemd/system/etcd.service

[Unit]

Description=Etcd Server

Documentation=https://github.com/coreos/etcd

After=network.target

[Service]

User=root

Type=notify

EnvironmentFile=-/etc/etcd/etcd.conf

ExecStart=/usr/bin/etcd

Restart=on-failure

RestartSec=10s

LimitNOFILE=40000

[Install]

WantedBy=multi-user.target

EOF

# apiserver

cat <<EOF >>/lib/systemd/system/kube-apiserver.service

[Unit]

Description=Kubernetes API Server

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=network.target

After=etcd.service

Wants=etcd.service

[Service]

User=root

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/apiserver

ExecStart=/usr/bin/kube-apiserver \

$KUBE_LOGTOSTDERR \

$KUBE_LOG_LEVEL \

$KUBE_ETCD_SERVERS \

$KUBE_API_ADDRESS \

$KUBE_API_PORT \

$KUBELET_PORT \

$KUBE_ALLOW_PRIV \

$KUBE_SERVICE_ADDRESSES \

$KUBE_ADMISSION_CONTROL \

$KUBE_API_ARGS

Restart=on-failure

Type=notify

LimitNOFILE=65536

[Install]

WantedBy=multi-user.target

EOF

# controller-manager

cat <<EOF >>/lib/systemd/system/kube-controller-manager.service

[Unit]

Description=Kubernetes Controller Manager

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=etcd.service

After=kube-apiserver.service

Requires=etcd.service

Requires=kube-apiserver.service

[Service]

User=root

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/controller-manager

ExecStart=/usr/bin/kube-controller-manager \

$KUBE_LOGTOSTDERR \

$KUBE_LOG_LEVEL \

$KUBE_MASTER \

$KUBE_CONTROLLER_MANAGER_ARGS

Restart=on-failure

LimitNOFILE=65536

[Install]

WantedBy=multi-user.target

EOF

# scheduler

cat <<EOF >>/lib/systemd/system/kube-scheduler.service

[Unit]

Description=Kubernetes Scheduler

Documentation=https://github.com/kubernetes/kubernetes

[Service]

User=root

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/scheduler

ExecStart=/usr/bin/kube-scheduler \

$KUBE_LOGTOSTDERR \

$KUBE_MASTER

Restart=on-failure

LimitNOFILE=65536

[Install]

WantedBy=multi-user.target

EOF

# 7、开启启动

systemctl daemon-reload

for service in etcd.service kube-apiserver.service kube-controller-manager.service kube-scheduler.service;

do systemctl enable $service;

done

# 8、启动并查看状态

for service in etcd.service kube-apiserver.service kube-controller-manager.service kube-scheduler.service;

do systemctl start $service;

done

for service in etcd.service kube-apiserver.service kube-controller-manager.service kube-scheduler.service;

do systemctl status $service;

done

# worker

# 1、下载、解压并移动文件

wget wget https://dl.k8s.io/v1.9.9/kubernetes-node-linux-amd64.tar.gz

tar -zxvf kubernetes-node-linux-amd64.tar.gz && cd cd kubernetes/node/bin/

mv kube* /usr/bin

# 2、配置文件

# config

mkdir -p /etc/kubernetes && cd /etc/kubernetes

cat <<EOF >>config

KUBE_LOGTOSTDERR="--logtostderr=true"

KUBE_LOG_LEVEL="--v=3"

KUBE_ALLOW_PRIV="--allow-privileged=false"

#KUBE_MASTER="--master=http://192.168.29.102:8080" 版本不支持了

EOF

#kubeconfig

mkdir /var/lib/kubelet

cat <<EOF >>/var/lib/kubelet/kubeconfig

apiVersion: v1

kind: Config

users:

- name: kubelet

clusters:

- name: kubernetes

cluster:

server: http://192.168.29.102:8080

contexts:

- context:

cluster: kubernetes

user: kubelet

name: service-account-context

current-context: service-account-context

EOF

# kubelet

cat <<EOF >>kubelet

#KUBELET_ADDRESS="--address=127.0.0.1"

KUBELET_HOSTNAME="--hostname-override=192.168.29.103"

#KUBELET_API_SERVER="--api-servers=http://192.168.29.102:8080"

# pod infrastructure container

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

KUBELET_ARGS="--enable-server=true --enable-debugging-handlers=true --fail-swap-on=false --kubeconfig=/var/lib/kubelet/kubeconfig"

EOF

# proxy

cat <<EOF >>proxy

KUBE_PROXY_ARGS=""

EOF

# 3、启动文件

cat <<EOF >>/lib/systemd/system/kubelet.service

[Unit]

Description=Kubernetes Kubelet

Documentation=https://github.com/GoogleCloudPlatform/kubernetes

After=docker.service #

Requires=docker.service # 先安装docker启动了再启动worker

[Service]

WorkingDirectory=/var/lib/kubelet

EnvironmentFile=-/etc/kubernetes/config

EnvironmentFile=-/etc/kubernetes/kubelet

ExecStart=/usr/bin/kubelet \

$KUBE_LOGTOSTDERR \

$KUBE_LOG_LEVEL \

$KUBELET_API_SERVER \

$KUBELET_ADDRESS \

$KUBELET_PORT \

$KUBELET_HOSTNAME \

$KUBE_ALLOW_PRIV \

$KUBELET_POD_INFRA_CONTAINER \

$KUBELET_ARGS

Restart=on-failure

KillMode=process

[Install]

WantedBy=multi-user.target

EOF

#proxy

cat <<EOF >>/lib/systemd/system/kube-proxy.service

[Unit]

Description=Kubernetes Proxy

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

EOF

# 4、安装docker 我是通过rpm安装的 最好通过yum安装,不用管依赖的问题

cd /data/

yum -y install container-selinux libcgroup libltdl.so.7 pigz libtool-ltdl

rpm -ivh docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm --nodeps #可能涉及到依赖问题

# 5、开机启动

systemctl daemon-reload

for service in docker.service kube-proxy.service kubelet.service;

do systemctl enable $service;

done

# 6、启动worker

for service in docker.service kube-proxy.service kubelet.service;

do systemctl start $service;

done

# 在master上检查

[root@ansible-k8s2 system]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

192.168.29.103 Ready <none> 16h v1.9.9

[root@ansible-k8s2 system]# kubectl get cs

NAME STATUS MESSAGE ERROR

controller-manager Healthy ok

etcd-0 Healthy {"health":"true"}

scheduler Healthy ok

# 注意:如果执行kubectl提示cannot excute binary file 这是下载的文件在解压后出现的问题,我这边是重新解压再移动就可以了

github地址:https://github.com/chances-for-those-who-have-prepared/study/blob/master/k8s/install_k8s_by_manual

如有问题,可在github地址:https://github.com/chances-for-those-who-have-prepared/study/issues说明

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发故事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档