k8s 国内源安装备忘清单

Sep 22 2020 Linux

注意以下命令,需要切换到 root 后运行

系统:ubuntu 16.04

安装 docker

首先确定已经安装完成 docker,如果没有安装可以使用以下脚本快速安装并配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
curl -fsSL https://get.docker.com | sudo sh -s -- --mirror Aliyun
sudo usermod -aG docker $USER
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"registry-mirrors": ["https://t9ab0rkd.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装 k8s 套件

1
2
3
4
5
6
7
8
9
10
11
12
# 添加并信任APT证书
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

# 添加源地址
add-apt-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"

# 更新源并安装最新版 kubenetes
sudo apt update && apt install -y kubelet kubeadm kubectl

# 添加 completion,最好放入 .bashrc 中
source <(kubectl completion bash)
source <(kubeadm completion bash)

关闭 swap

为了性能考虑,k8s 需要关闭 swap 功能,然后重启主机。

/etc/fstab 中找到带有 swap 的那一行,注释掉。

1
2
$ vim /etc/fstab
# UUID=9224d95f-cd87-4b56-b249-3dc7de4491d3 none swap sw 0 0

启动 master 节点:

1
kubeadm init --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'

--image-repository 指定控制平面容器镜像地址,这里使用aliyun镜像,而不是默认的 k8s.gcr.io,这样就能避免下载失败。

如果 init 失败,检查是否关闭 swap、 用户是否为 root 以及是否下载好核心组件镜像(可能得网络的问题)、是否为至少 2G 内存,然后运行 kubeadm reset 接着再 kubeadm init

配置读取路径

1
2
# append to .bashrc
export KUBECONFIG=/etc/kubernetes/admin.conf

安装网络插件

1
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

加入 worker

worker 节点加入 master,使用 kubeadm init 最后提示的命令在 worker 上运行

1
2
3
4
kubeadm join 192.168.199.117:6443 \
--token y8l6qv.oj2hxua9szguei23 \
--discovery-token-ca-cert-hash \
sha256:bae71d8fb4a26c5f29a6df2db037e08e581fcb344ff85089a603e3eeb9d6d26f

其中 --token 是临时的生成,可以通过下面命令获取

1
2
3
$ kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
y8l6qv.oj2hxua9szguei23 23h 2019-09-09T12:04:27+08:00 authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token

这个 token 24小时后会自动过期,不过可以再次获取

1
2
$ kubeadm token create
czlboe.16mkdt47tkhd0714

--discovery-token-ca-cert-hash 指的是 CA 证书的哈希值,那么可以使用这种方式获取:

1
2
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | sha256sum | awk '{print $1}'
3e77f845edf944d76234a6d78dde3e5bae3e50261362b1d8cc8d025ac97136b0

查看 nodes

在 master 节点上运行

1
kubectl get nodes

minikube国内源

minikube文档页面,选择操作系统,然后下载 minikube,注意版本号。

k8s-kubectl页面下载 kubectl 并放在$PATH下,注意版本号。

下载安装 virtualbox。

启动命令:

1
2
3
4
5
6
minikube start \
--vm-driver=virtualbox \
--image-mirror-country=cn \
--registry-mirror='https://t9ab0rkd.mirror.aliyuncs.com' \
--image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' \
--iso-url='https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.5.1.iso'

–image-mirror-country cn 将缺省利用 registry.cn-hangzhou.aliyuncs.com/google_containers 作为安装Kubernetes的容器镜像仓库,
–iso-url=* 利用阿里云的镜像地址下载相应的 .iso 文件
–cpus=2: 为minikube虚拟机分配CPU核数
–memory=2000mb: 为minikube虚拟机分配内存数
–kubernetes-version=*
: minikube 虚拟机将使用的 kubernetes 版本

官方源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# k8s
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

# docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# apt安装
apt-get update && apt-get install docker-ce kubeadm

cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF

mkdir -p /etc/systemd/system/docker.service.d

systemctl daemon-reload
systemctl restart docker