2019年Kubernetes安装说明安装k8s详细教程
推荐Kubernetes视频教程Kubernetes免费视频教程版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接...
推荐Kubernetes视频教程
</span>
</div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-3019150162.css">
<div id="content_views" class="markdown_views prism-atom-one-light">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h3><a name="t0"></a><a id="_1"></a>前言</h3>
学习k8s的第一步肯定是安装进行实操。但是对于生产环境搭建一个高可用的k8s集群其实还是有点挑战难度的,特别是非专业运维开发人员。因为要涉及到的方面很多,默认配置都不能用于生产环境,性能调优,安全验证等等都是必不可少的。对于入门者来说的话,第一步安装其实有时候已经把一些人挡在了门外。自己也是费了一点功夫,才搭建了在本地能测试的k8s集群,用来学习。其中遇到了一些坑,所以记录一下,希望能帮助到和我遇到一样问题的朋友。
一.准备工作
1.1.科学上网
推荐自己搭建一个ss服务。弄一个国外服务器,例如阿里云海外节点的云服务器(ECS)即可.详细教程大家自行网上搜索教程。假如遇到国外节点慢,同时又有国内服务器的,可以我的一遍文章(https://blog.csdn.net/xyz_dream/article/details/87191233),使用国内中继国外节点,有些情况下能降低延时。
1.2.配置ss客户端以及设置http, https代理,docker代理
pipy: https://pypi.org/project/shadowsocks/
自己连接国外搭建好的ss服务器。
sslocal -c config.json -d start # 连接国外ss服务器 config.json内容大致如下
{
“server”:“my_server_ip”,
“server_port”:8388,
“local_address”: “127.0.0.1”,
“local_port”:1080,
“password”:“mypassword”,
“timeout”:300,
“method”:“aes-256-cfb”,
“fast_open”: false
}
1.3.使用privoxy将socks5转为http和https代理
# 安装privoxy
yum install privoxy
# vim /etc/privoyx/config 配置文件 加入内容
forward-socks5 / 127.0.0.1:1080 .
# 启动 privoxy 代理
systemctl start privoxy
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
1.4.配置系统http https以及docker的https代理
vim .bash_profile
内容:
# 输入vpn就可以科学上网了
alias vpn=‘export ALL_PROXY=127.0.0.1:8118 && export http_proxy=127.0.0.1:8188
&& export https_proxy=127.0.0.1:8188’
# 输入uvpn 关闭科学上网
alias uvpn=‘unset ALL_PROXY http_proxy https_proxy’
# 测试是否能访问google 能访问则会有内容输出
curl www.google.com
# 配置docker的https代理
官网文档地址: https://docs.docker.com/config/daemon/systemd/
-
mkdir -p /etc/systemd/system/docker.service.d
-
vim /etc/systemd/system/docker.service.d/https-proxy.conf:
[Service]
Environment=“HTTPS_PROXY=https://proxy.example.com:443/”
-
systemctl daemon-reload
-
systemctl restart docker
1.5.预先docker pull所需镜像
#预先把这些所需镜像pull下拉 假如能pull 则docker的https代理生效
docker pull k8s.gcr.io/kube-proxy:v1.13.4
docker pull k8s.gcr.io/kube-apiserver:v1.13.4
docker pull k8s.gcr.io/kube-scheduler:v1.13.4
docker pull k8s.gcr.io/kube-controller-manager:v1.13.4
docker pull k8s.gcr.io/kube-apiserver:v1.13.0
docker pull k8s.gcr.io/coredns:1.2.6
docker pull k8s.gcr.io/etcd:3.2.24
docker pull k8s.gcr.io/pause:3.1
1.6.其他
1.systemctl stop firewalld #暂时关闭防火墙
2.setenforce 0 # 禁用SELINUX
-
vim /etc/sysctl.d/k8s.conf
-
swapoff -a
添加内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
4.配置生效
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe – ip_vs
modprobe – ip_vs_rr
modprobe – ip_vs_wrr
modprobe – ip_vs_sh
modprobe – nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules
&& lsmod | grep -e ip_vs -e nf_conntrack_ipv4
二.正式安装
2.1.安装docker
yum update -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates #查看docker版本 选择版本安装 我安装了 18.06.3-ce
systemctl start docker
systemctl enable docker
2.2.安装k8s
源码安装k8s难度较大,要对k8s十分了解,关于证书颁发,权限,网络,存储等等。所以官方推荐使用kubeadm来初始化以及管理k8s集群。 master节点必须安装kubectl组件 node节点必须安装 kubelet组件。
# 1.加入k8s源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
# 2.yum安装
yum makecache fast
yum install -y kubelet kubeadm kubectl
# 3.安装完毕
systemctl enable kubelet.service
# 4.提示补全kubectl命令
yum install -y bash-completion
locate bash_completion
# 显示/usr/share/bash-completion/bash_completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
2.3.初始化集群
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=127.0.0.1
若安装成功:
mkdir -p
H
O
M
E
<
/
s
p
a
n
>
/
.
k
u
b
e
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
f
u
n
c
t
i
o
n
"
>
s
u
d
o
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
f
u
n
c
t
i
o
n
"
>
c
p
<
/
s
p
a
n
>
−
i
/
e
t
c
/
k
u
b
e
r
n
e
t
e
s
/
a
d
m
i
n
.
c
o
n
f
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
HOME</span>/.kube <span class="token function">sudo</span> <span class="token function">cp</span> -i /etc/kubernetes/admin.conf <span class="token variable">
HOME</span>/.kube<spanclass="tokenfunction">sudo</span><spanclass="tokenfunction">cp</span>−i/etc/kubernetes/admin.conf<spanclass="tokenvariable">HOME/.kube/config
sudo chown
(
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
f
u
n
c
t
i
o
n
"
>
i
d
<
/
s
p
a
n
>
−
u
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
)
<
/
s
p
a
n
>
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
k
e
y
w
o
r
d
"
>
:
<
/
s
p
a
n
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
<
s
p
a
n
c
l
a
s
s
=
"
t
o
k
e
n
v
a
r
i
a
b
l
e
"
>
(</span><span class="token function">id</span> -u<span class="token variable">)</span></span><span class="token keyword">:</span><span class="token variable"><span class="token variable">
(</span><spanclass="tokenfunction">id</span>−u<spanclass="tokenvariable">)</span></span><spanclass="tokenkeyword">:</span><spanclass="tokenvariable"><spanclass="tokenvariable">(id -g) $HOME/.kube/config
# 安装flannel网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#提示:
一般会持续3-4分钟。 如果一直顺利 那么恭喜你90%完成。如果在kubectl config image pull卡顿
尝试kuectl config image ls查看所需安装的image是否已经pull正确。 若之前准备工作pull的镜像版本不正确,
需要重新kubectl cocnfig image pull即可。需要等待时间跟网速有关,一般快的话5-6分钟,慢的话在10几分钟左右。
只要你之前docker配置https代理正确以及你的科学上网配置正常,那么应该不会有什么问题。
2.4.检查安装情况
# 1.检查集群node是否处于Ready状态
kubectl get nodes
若处于Ready状态: 恭喜完成安装,可以开始玩一些k8s的Demo了!
若处于NotReady状态:
1.kubectl get pod --all-namespaces # 查看哪些pod未处于Running状态
2.查看未处于Running状态的pod的详细
kubectl describe pod 未出于Running状态的pod的名称
- 处于安全考虑 默认master节点不能被调度,现在是测试环境可以让master被调度
kubectl taint nodes --all node-role.kubernetes.io/master-
具体问题具体网上继续查询相关错误信息。不过一般到这一步基本没问题,一般是pull镜像失败导致的。不过只要你
之前pull镜像能拉下来, 那么可能是时间问题,跟你的网络速度有关系,稍等几分钟可能就处于Ready状态了。
有兴趣的童鞋可以关注我的个人博客: https://mojun.me
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
</div>
更多推荐
所有评论(0)