install k8s

step 1 Set up virtual machine.

Set at least 4 processors for virtual machine.

step 2 Set static IP

Edit file /etc/netplan/01-network-manager-all.yaml
Content:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:  # Get from ifconfig
      dhcp4: yes
      addresses: [192.168.1.190/24]      # change
      gateway4: 192.168.1.1             # change
        # nameservers:
        # addresses: [114.114.114.114]      # change

Apply the change

netplan apply

step 3 Prepare openssh-server

# Install 
sudo apt install openssh-server

# start ssh server
sudo service ssh start

step 4 Shutdown firewall

# show ufw status
sudo ufw status
# disable ufw
sudo ufw disable

step 5 shutdown swap

Edit file /etc/fstab, comment out line which includes swap.
Restart the OS, and run free command.
The swap should be zero like below:

free
Swap:   0     0     0

step 6 Install docker

containerd is also fine. We use docker here.

apt install docker.io

Change the control group driver to systemd

sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://uy35zvn6.mirror.aliyuncs.com"],
    "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

# Reload
systemctl daemon-reload
systemctl restart docker

Check docker.

docker version

step 7 Set iptables.

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
    
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
    
sudo sysctl --system

step 8 Set apt

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

# Add GPG
sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

# Add k8s apt source
sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF

step 9 Install kubeadm,kubelet,kubectl

sudo apt-get update
sudo apt-get install -y kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00 
sudo apt-mark hold kubelet kubeadm kubectl

Initialize k8s cluster. This will take a few seconds.

# apiserver-advertise-address should be the IP of VM.
kubeadm init \
 --image-repository registry.aliyuncs.com/google_containers \
 --kubernetes-version v1.22.2 \
 --pod-network-cidr=192.168.0.0/16 \
 --apiserver-advertise-address=192.168.1.190

Output:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

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.1.190:6443 --token <token> \
    --discovery-token-ca-cert-hash <hash>

Just follow the output to set kubectl config.

If we run kubectl get node, we'll find that node is not ready. Because we didn't install network plugin yet.

kubectl get node
NAME   STATUS     ROLES                  AGE     VERSION
k8s1   NotReady   control-plane,master   6m32s   v1.22.2

Run journalctl -xeu kubelet can get the following error.

"Unable to update cni config" err="no networks found in /etc/cni/net.d"

step 10 Install Calico

Remove taint of master node, otherwise Calico pods can not be scheduled to master node.

kubectl taint nodes --all node-role.kubernetes.io/master-

Calico Quick Start
Apply Calico yaml file.

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.0/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.0/manifests/custom-resources.yaml

Install Calico may take few minutes.
we can check the calico pods status by running command:

kubectl get pod -n calico-system

Output:

NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-78687bb75f-5gmjw   1/1     Running   0          8m29s
calico-node-kqwns                          1/1     Running   0          8m29s
calico-typha-859b477db7-vtzbs              1/1     Running   0          8m29s
csi-node-driver-k5qdf                      2/2     Running   0          5m20s

If all calico pods are running, check the node status.

NAME   STATUS   ROLES                  AGE   VERSION
k8s1   Ready    control-plane,master   30m   v1.22.2

Node is ready now.

Check cs.

kubectl get cs

Output:

NAME                 STATUS      MESSAGE                                                                                       ERROR
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused   
controller-manager   Healthy     ok                                                                                            
etcd-0               Healthy     {"health":"true","reason":""} 

Scheduler is unhealthy, we need to delete --port=0 of file kube-controller-manager.yaml and kube-scheduler.yaml in directory /etc/kubernetes/manifests/
Then restart kubelet by running systemctl restart kubelet.service. We'll see all cs is healthy now.
Output:

NAME                 STATUS    MESSAGE                         ERROR
scheduler            Healthy   ok                              
controller-manager   Healthy   ok                              
etcd-0               Healthy   {"health":"true","reason":""}

11 Add other nodes to cluster.

Repeat step 1 to 10. But don't run kubeadm init, just run kubeadm join instead. And it will take few seconds to create a calico pod in the new node.

NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-78687bb75f-5gmjw   1/1     Running   0          78m
calico-node-87bl4                          1/1     Running   0          8m12s
calico-node-kqwns                          1/1     Running   0          78m
calico-typha-859b477db7-vtzbs              1/1     Running   0          78m
csi-node-driver-k5qdf                      2/2     Running   0          75m
csi-node-driver-tjr26                      2/2     Running   0          4m10s
NAME   STATUS   ROLES                  AGE     VERSION
k8s1   Ready    control-plane,master   100m    v1.22.2
k8s2   Ready    <none>                 8m33s   v1.22.2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容