UBUNTU20安装K8S集群

环境初始化

# 关闭SWAP
swapoff -a
rm -f /swap.img
vim /etc/fstab
# /swap.img                         注释掉

# 开启IP转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

# 查看状态
sysctl -p

安装DOCKER

step1:安装依赖

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

step2:安装GPG证书

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

step3:写入软件源信息

sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

step4:更新并安装DOCKER-CE->注意:此处可能会报错(参考后面的"遇到的问题")

sudo apt-get -y update
apt install -y docker-ce

安装DOCKER-COMPOSE.YML

apt install -y docker-compose

将DOCKER设置为开机自启

systemctl enable docker

配置镜像--否则后续DOCKER拉取镜像会很慢!!!

$ cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

DOCKER版本

root@master:/# docker --version
Docker version 20.10.20, build 9fdeb9c

安装K8S

添加证书

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 

添加APT源

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

apt-get update

查看可安装版本

apt-cache madison kubelet

安装指定版本

apt-get install -y kubelet=1.18.4-00 kubeadm=1.18.4-00 kubectl=1.18.4-00

设置开机启动

sudo systemctl enable kubelet && sudo systemctl start kubelet

查看所需镜像

kubeadm config images list --kubernetes-version=v1.18.4

k8s.gcr.io/kube-apiserver:v1.18.4
k8s.gcr.io/kube-controller-manager:v1.18.4
k8s.gcr.io/kube-scheduler:v1.18.4
k8s.gcr.io/kube-proxy:v1.18.4
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7

从新地址下载镜像(将上面的地址换成下面的)

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7

为镜像重新打TAG(重新命名上面拉取的镜像)

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.4 k8s.gcr.io/kube-apiserver:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.4 k8s.gcr.io/kube-controller-manager:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.4 k8s.gcr.io/kube-scheduler:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.4 k8s.gcr.io/kube-proxy:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

初始化MASTER节点

kubeadm init --kubernetes-version=v1.18.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

初始化完成之后会出现提示,之后将后面的内容保存到一个文件中,先不添加节点检查集群状态是否正常。

Your Kubernetes control-plane has initialized successfully!             # 安装成功的提示

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.93.136:6443 --token vvd4zg.4ay8rxanmh7fopec \
    --discovery-token-ca-cert-hash sha256:df77248c6939eb6c6062d50e6e99c4f881f48e619ef4d2e61304a529a4c2eb1f 

此时执行命令会报如下错误,需要设置环境变量:

The connection to the server localhost:8080 was refused - did you specify the right host or port?

具体根据情况,此处记录LINUX设置该环境变量
方式一:编辑文件设置

vim /etc/profile

在底部增加新的环境变量:export KUBECONFIG=/etc/kubernetes/admin.conf
方式二:直接追加文件内容

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile

使生效

source /etc/profile
root@master:/# kubectl get componentstatus
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"} 

root@master:/home/xieming# kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   26m     v1.18.4
node1    Ready    <none>   2m27s   v1.18.4
node2    Ready    <none>   2m25s   v1.18.4
node3    Ready    <none>   2m27s   v1.18.4

添加CNI网络组件--可能无法下载(国外地址需要翻墙)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

检查状态

kubectl get pods -n kube-system -l app=flannel              ???过时了--命名空间变了

root@master:~/kubernetes# kubectl get pods -n kube-flannel
NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-6sr4s   1/1     Running   1          2d
kube-flannel-ds-gcsxl   1/1     Running   1          2d
kube-flannel-ds-qg9mc   1/1     Running   1          2d
kube-flannel-ds-tdpp5   1/1     Running   1          2d
root@master:~/kubernetes# kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-66bff467f8-dlj8c         1/1     Running   1          2d
coredns-66bff467f8-g4z94         1/1     Running   1          2d
etcd-master                      1/1     Running   1          2d
kube-apiserver-master            1/1     Running   1          2d
kube-controller-manager-master   1/1     Running   1          2d
kube-proxy-25n7c                 1/1     Running   1          2d
kube-proxy-6l5bn                 1/1     Running   1          2d
kube-proxy-l7hm8                 1/1     Running   1          2d
kube-proxy-xgcjt                 1/1     Running   1          2d
kube-scheduler-master            1/1     Running   1          2d

检查节点是否准备完成

kubectl get nodes

为NODE的角色打标签

kubectl label node node01 node-role.kubernetes.io/node=node

测试KUBERNETES集群

在KUBERNETES集群中创建一个POD,验证是否正常运行:

root@master:~/kubernetes# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
root@master:~/kubernetes# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed

root@master:~/kubernetes# kubectl get pod,svc
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-f89759699-5kscr   1/1     Running   0          13m

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        2d
service/nginx        NodePort    10.107.128.217   <none>        80:31788/TCP   2m36s

访问地址:http://nodeip:port

遇到的问题

  1. 解决UBUNTU20.04安装DOCKER时设置仓库失败问题
E: Failed to fetch https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/stable/binary-amd64/Packages.bz2  File has unexpected size (19784 != 18519). Mirror sync in progress? [IP: 119.188.122.238 443]
   Hashes of expected file:
    - Filesize:18519 [weak]
    - SHA512:25ae8d060506d811c6e53f43b08e3bc9a95de020606dae54e5f8770384b50cbbde50307085d66d2020e10431025331e788ba0e4208f734fc8cfafe18b1f0bcff
    - SHA256:bff1fb7605fad668dc36da2a8ab9e8c864d48266d2859c35bd51ad38247181ff
    - SHA1:836ec0a727741aebd12b599656dc715b830a6dfe [weak]
    - MD5Sum:9d0854226ca04178e142c0bb32139451 [weak]
   Release file created at: Wed, 05 Oct 2022 15:08:31 +0000
E: Some index files failed to download. They have been ignored, or old ones used instead.

或

Err:5 https://download.docker.com/linux/ubuntu focal Release                          
  404  Not Found [IP: 13.249.173.43 443]

解决办法:

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

推荐阅读更多精彩内容