Centos7.4 下Kubernetes 1.1.0集群安装部署

操作系统

#服务器1
[root@VM_0_12_centos ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
#服务器2
[root@VM_0_3_centos ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

服务器1作为Master,其IP为193.112.177.239
服务器2作为Node1 ,其IP为123.207.26.143

部署前的准备工作

docker-ce的安装


# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# Step 5: 查看安装的docker-ce的版本
docker version
#配置阿里云的镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
#通过登陆https://cr.console.aliyun.com,获取属于自己的镜像源的地址。ß
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

etcd的安装

ETCD是用于共享配置和服务发现的分布式、一致性的KV存储系统,主要包括了增删改查、安全认证、集群、选举、事务、分布式锁、Watch机制等等,实现了RAFT协议,功能相当强大

有两台云主机
# step 1: 将2台主机的信息添加到三台主机的hosts文件中,编辑/etc/hosts写入信息如下
123.207.26.143 node1
193.112.177.239 etcd2
# step 2:为每一台主机安装etcd
yum install etcd -y
# step 3:配置每一台主机的集群信息,编辑/etc/etcd/etcd.conf
#node1节点
# [member]
# 节点名称
ETCD_NAME=node1
# 数据存放位置
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
# 监听其他 Etcd 实例的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# 监听客户端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
#[cluster]
# 通知其他 Etcd 实例地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://node1:2380"
# 初始化集群内节点地址
ETCD_INITIAL_CLUSTER="node1=http://node1:2380,etcd2=http://etcd2:2380"
# 初始化集群状态,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# 初始化集群 token
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# 通知 客户端地址
ETCD_ADVERTISE_CLIENT_URLS="http://node1:2379,http://node1:4001"

#[cluster]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://etcd2:2380"
ETCD_INITIAL_CLUSTER="node1=http://node1:2380,etcd2=http://etcd2:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd2:2379,http://etcd2:4001"

flannel的安装

#为每一台主机安装flannel,作为docker之间通信的组件
curl -L https://github.com/coreos/flannel/releases/download/v0.7.0/flannel-v0.7.0-linux-amd64.tar.gz -o flannel.tar.gz
mkdir -p /opt/flannel
tar xzf flannel.tar.gz -C /opt/flannel

安装k8s

在Master安转k8s server

API SERVER是整个k8s集群的注册中心、交通枢纽、安全控制入口。

#step 1:下载k8s-server
wget https://dl.k8s.io/v1.10.0/kubernetes-server-linux-amd64.tar.gz
#step 2:解压
tar xvf kubernetes-server-linux-amd64.tar.gz
#step 3:拷贝kube-apiserver到/usr/local/bin/目录下
cp  ./kubernetes/server/bin/kube-apiserver /usr/local/bin/
#step 4:在/usr/lib/systemd/system/目录下创建kube-apiserver.service,编辑内容如下
[Unit]
Description=Kube API  Server
After=etcd.service
Wants=etcd.service
 
[Service]
Type=notify
EnvironmentFile=/etc/kubernetes/apiserver
ExecStart=/usr/local/bin/kube-apiserver $KUBE_API_ARGS
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target
#step 5:在/etc/kubernetes/目录下创建apiserver配置文件,编辑内容如下
KUBE_API_ARGS="--etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range=170.170.0.0/16 --service-node-port-range=1-65535 --admission-control=NamespaceLifecycle,LimitRanger,ResourceQuota --logtostderr=false --log-dir=/home/chen/log/kubenetes --v=2"
#step 6:运行kube-apiserver
sudo systemctl daemon-reload
sudo systemctl enable kube-apiserver.service
sudo systemctl start kube-apiserver.service
#step 7:查看是否安装成功
curl http://localhost:8080/api/

在Master安装kube-controller-manager

Kube Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Kube Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

#step 1:拷贝kube-controller-manager到/usr/local/bin/
cp  ./kubernetes/server/bin/kube-controller-manager /usr/local/bin/
#step 2:在/usr/lib/systemd/system/目录下创建kube-controller-manager.service编辑内容如下
[Unit]
Description=Kube Controller Manager
After=kube-apiserver.service
Requires=kube-apiserver.service
 
[Service]
EnvironmentFile=/etc/kubernetes/controller-manager
ExecStart=/usr/local/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target

#step 3:在/etc/kubernetes/目录下创建controller-manager配置文件编辑如下
KUBE_CONTROLLER_MANAGER_ARGS="--master=http://127.0.0.1:8080 --logtostderr=false --log-dir=/home/chen/log/kubernetes --v=2"
#step 4:启动kube-controller-manager
sudo systemctl daemon-reload
sudo systemctl enable kube-controller-manager.service
sudo systemctl start kube-controller-manager.service

在Master安装kube-scheduler

Kube Scheduler是负责调度Pod到具体的Node,它通过API Server提供的接口监听Pods,获取待调度pod,然后根据一系列的预选策略和优选策略给各个Node节点打分排序,然后将Pod调度到得分最高的Node节点上。

#step 1:拷贝kube-scheduler到/usr/local/bin/
cp  ./kubernetes/server/bin/kube-scheduler  /usr/local/bin/
#step 2:在/usr/lib/systemd/system/目录下创建kube-scheduler.service编辑内容如下
[Unit]
Description=Kube Scheduler
After=kube-apiserver.service
Requires=kube-apiserver.service
 
[Service]
EnvironmentFile=/etc/kubernetes/scheduler
ExecStart=/usr/local/bin/kube-scheduler $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target

#step 3:在/etc/kubernetes/目录下创建scheduler配置文件编辑如下
sudo systemctl daemon-reload
sudo systemctl enable kube-scheduler.service
sudo systemctl restart kube-scheduler.service

在Node安转kubernetes-node

此处是所有node节点都需要进行的安装操作

在k8s集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和pod中的容器。kubelet会在API Server上注册节点信息,定期向Master汇报节点资源使用情况。

#step 1:下载k8s-node
wget https://dl.k8s.io/v1.10.0/kubernetes-node-linux-amd64.tar.gz
tar xvf kubernetes-node-linux-amd64.tar.gz
#step 2:拷贝kubelet到/usr/local/bin/
cp  ./kubernetes/node/bin/kubelet  /usr/local/bin/
 #step 3:在/usr/lib/systemd/system/目录下创建kubelet.service编辑内容如下
[Unit]
Description=Kube Kubelet Server
After=docker.service
Requires=docker.service
 
[Service]
ExecStart=/usr/local/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.yaml --fail-swap-on=false --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target

#step 4: 目录下创建配置文件,包括kubelet和kubelet.yaml。kubelet.yaml内容如下
apiVersion: v1
kind: Config
clusters:
-  name: local
-  cluster:
      server: http://193.112.177.239:8080
users:
-  name: kubelet
contexts:
-  context:
     cluster: local
     user: kubelet
-   name: kubelet-context
current-context: kubelet-context
#step 5:启动kubelet
sudo systemctl daemon-reload
sudo systemctl enable kubelet.service
sudo systemctl start kubelet.service
#step 6:查看是否启动成功
sudo systemctl status kubelet.service

在node中安装配置kube-proxy

kube-proxy是管理service的访问入口,包括集群内Pod到Service的访问和集群外访问service。关于service和pod的概念可以自行网上查看。

#step 2:拷贝kube-proxy到/usr/local/bin/
cp  ./kubernetes/node/bin/kube-proxy  /usr/local/bin/
 #step 3:在/usr/lib/systemd/system/目录下创建kube-proxy.service编辑内容如下
[Unit]
Description=Kube Kubelet Server
After=docker.service
Requires=docker.service
 
[Service]
ExecStart=/usr/local/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.yaml --fail-swap-on=false --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target

#step 4:在/etc/kubernetes/目录下创建proxy配置文件内容如下
KUBE_PROXY_ARGS="--master=http://193.112.177.239:8080 --logtostderr=false --log-dir=/home/chen/log/kubernetes --v=2"
#step 5:启动proxy
sudo systemctl daemon-reload
sudo systemctl enable kube-proxy.service
sudo systemctl start kube-proxy.service

(此处需注意主机的名字不能有_否则不能创建节点,修改主机名可以参考https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_043_hostname.html)

如在node上连接不上apiserver可运行以下命令其中apiserverIP为IP

kebuctl -s http://apiserverIP:8080 version

参考

https://www.cnblogs.com/zhenyuyaodidiao/p/6237019.html
https://blog.csdn.net/weixin_39686421/article/details/80333015

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 一、组件版本和配置策略 1、组件版本 Kubernetes 1.10.4Docker 18.03.1-ceEtcd...
    Horne阅读 3,557评论 1 50
  • 安装k8s Master高可用集群 主机 角色 组件 172.18.6.101 K8S Master Kubele...
    jony456123阅读 8,040评论 0 9
  • 你,还是当初的那个你吗?你,变了吗?我喜欢的是当初的那个会为了朋友义无反顾去违反校规的那个男孩,可你现在还是...
    酸菜妹阅读 202评论 0 0
  • 补16.11.12日: 看了无锡马拉松的宣传视频,时间大体是在明年3月25日,人生总要去跑一次马拉松的冲动终于还是...
    梁余音阅读 295评论 0 0
  • (注:歌词第一句是借鉴于一首诗-乌衣巷) 作词:周心云 旧时人隐乌衣巷 吴道弄堂王谢家 风华翩翩少儿郎 女儿难掩桃...
    周周周心云阅读 843评论 0 0