在centos7上搭建k8s1.9.9

简介: 在centos7上搭建k8s1.9.9

#! /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说明

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
282 4
|
3月前
|
Kubernetes Linux 开发工具
centos7通过kubeadm安装k8s 1.27.1版本
centos7通过kubeadm安装k8s 1.27.1版本
|
4月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
832 4
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
4月前
|
Kubernetes API 虚拟化
|
4月前
|
Kubernetes Linux Docker
在centos7上搭建k8s环境
在centos7上搭建k8s环境
|
4月前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
203 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
8月前
|
Kubernetes Linux 网络安全
CentOS7搭建Kubernetes环境
CentOS7搭建Kubernetes环境
172 0
CentOS7搭建Kubernetes环境
|
8月前
|
Kubernetes Linux 网络安全
CentOS7上kubeadm方式部署Kubernetes(v1.24.3版本)
CentOS7上kubeadm方式部署Kubernetes(v1.24.3版本)
454 0
|
运维 Kubernetes Linux
kubernetes(2):Centos7 安装 kubernetes 1.5 版本
1,kubernetes 安装 centos 7 已经集成了kubernetes 1.5 直接安装就可以了。 非常的简单,方便。 yum install kubernetes etcd docker 同时会,安装一个kubernetes-client kubernetes-master kubernetes-node 运维也是非常的方便了。1.5.2-
2550 0
|
Kubernetes Linux Docker
kubernetes(1):Centos7 安装 kubernetes 1.4.0 版本
首先看到最新的kubernetes 1.4.0 发布了。激动了下,就开始研究了。 本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/52685592 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,关于k8s Kubernetes
1858 0

热门文章

最新文章