Skip to content

Instantly share code, notes, and snippets.

@islishude
Last active January 4, 2023 02:12
Embed
What would you like to do?
k8s-国内源安装

MOVE TO HERE

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

安装 docker

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

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 套件

# 添加并信任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 的那一行,注释掉。

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

启动 master 节点:

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

配置读取路径

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

安装网络插件

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

加入 worker

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

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

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

$ 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

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

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

查看 nodes

在 master 节点上运行

kubectl get nodes

minikube国内源

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

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

下载安装 virtualbox。

启动命令:

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 版本

官方源

# 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment