Install Kubernetes Step By Step

Install Kubernetes Step By Step

Install Kubernetes Step By Step

Install Kubernetes Step By Step

1.確認網路連線是否正常
cat /etc/hosts
ping node1 -c3
ping node2 -c3
ping google.com -c3
2.安裝docker
yum install sshpass -y

yum install docker -y
sshpass -p container ssh -p 22 root@node1 “yum install docker -y”
sshpass -p container ssh -p 22 root@node2 “yum install docker -y”
3.啟動服務
systemctl enable docker && systemctl start docker && systemctl status docker
sshpass -p container ssh -p 22 root@node1 “systemctl enable docker && systemctl start docker && systemctl status docker”
sshpass -p container ssh -p 22 root@node2 “systemctl enable docker && systemctl start docker && systemctl status docker”
7.安裝指令補其功能
yum install bash-completion -y
sshpass -p container ssh -p 22 root@node1 “yum install bash-completion -y”
sshpass -p container ssh -p 22 root@node2 “yum install bash-completion -y”
8.停用swap
swapoff /dev/mapper/centos-swap
sed -i ‘s/^/dev/mapper/centos-swap/#&/g’ /etc/fstab
sshpass -p container ssh -p 22 root@node1 “swapoff /dev/mapper/centos-swap”
sshpass -p container ssh -p 22 root@node1 “sed -i ‘s/^/dev/mapper/centos-swap/#&/g’ /etc/fstab”
sshpass -p container ssh -p 22 root@node2 “swapoff /dev/mapper/centos-swap”
sshpass -p container ssh -p 22 root@node2 “sed -i ‘s/^/dev/mapper/centos-swap/#&/g’ /etc/fstab”
9.設定sysctl參數
$ vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
$ sysctl –system
$ sshpass -p container scp /etc/sysctl.d/k8s.conf root@node1:/etc/sysctl.d/k8s.conf
$ sshpass -p container ssh -p 22 root@node1 “sysctl –system”
$ sshpass -p container scp /etc/sysctl.d/k8s.conf root@node2:/etc/sysctl.d/k8s.conf
$ sshpass -p container ssh -p 22 root@node2 “sysctl –system”

10.載入module及安裝相關RPM套件
yum install -y ipvsadm conntrack sysstat curl
sshpass -p container ssh -p 22 root@node1 “yum install -y ipvsadm conntrack sysstat curl”
sshpass -p container ssh -p 22 root@node2 “yum install -y ipvsadm conntrack sysstat curl”

modprobe br_netfilter && modprobe ip_vs
sshpass -p container ssh -p 22 root@node1 “modprobe br_netfilter && modprobe ip_vs”
sshpass -p container ssh -p 22 root@node2 “modprobe br_netfilter && modprobe ip_vs”

  1. 安裝kubernetes
    vi /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
exclude=kube*

yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes –nogpgcheck
systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet

sshpass -p container scp /etc/yum.repos.d/kubernetes.repo root@node1:/etc/yum.repos.d/kubernetes.repo
sshpass -p container ssh -p 22 root@node1 “yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes –nogpgcheck”
sshpass -p container ssh -p 22 root@node1 “systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet”
sshpass -p container scp /etc/yum.repos.d/kubernetes.repo root@node2:/etc/yum.repos.d/kubernetes.repo
sshpass -p container ssh -p 22 root@node2 “yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes –nogpgcheck”
sshpass -p container ssh -p 22 root@node2 “systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet”

12.cri-0 for 1.24.x
vi /etc/yum.repos.d/devel\:kubic\:libcontainers\:stable.repo
cat /etc/yum.repos.d/devel\:kubic\:libcontainers\:stable.repo

[devel_kubic_libcontainers_stable]
name=Stable Releases of Upstream github.com/containers packages (CentOS_7)
type=rpm-md
baseurl=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/
gpgcheck=1
gpgkey=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/repodata/repomd.xml.key
enabled=1

vi /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:1.24:1.24.1.repo

[devel_kubic_libcontainers_stable_cri-o_1.24_1.24.1]
name=devel:kubic:libcontainers:stable:cri-o:1.24:1.24.1 (CentOS_7)
type=rpm-md
baseurl=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24:/1.24.1/CentOS_7/
gpgcheck=1
gpgkey=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24:/1.24.1/CentOS_7/repodata/repomd.xml.key
enabled=1

yum install cri-o cri-tools -y
systemctl enable crio
systemctl status crio

sshpass -p container scp “/etc/yum.repos.d/devel:kubic:libcontainers:stable.repo” root@node1:”/etc/yum.repos.d/devel:kubic:libcontainers:stable.repo”

vi /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:1.24:1.24.1.repo

[devel_kubic_libcontainers_stable_cri-o_1.24_1.24.1]
name=devel:kubic:libcontainers:stable:cri-o:1.24:1.24.1 (CentOS_7)
type=rpm-md
baseurl=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24:/1.24.1/CentOS_7/
gpgcheck=1
gpgkey=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24:/1.24.1/CentOS_7/repodata/repomd.xml.key
enabled=1

sshpass -p container ssh -p 22 root@node1 “yum install -y cri-o cri-tools”
sshpass -p container ssh -p 22 root@node1 “systemctl start crio”
sshpass -p container ssh -p 22 root@node1 “systemctl enable crio”
sshpass -p container ssh -p 22 root@node1 “systemctl status crio”

sshpass -p container scp “/etc/yum.repos.d/devel:kubic:libcontainers:stable.repo” root@node2:”/etc/yum.repos.d/devel:kubic:libcontainers:stable.repo”

vi /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:1.24:1.24.1.repo

[devel_kubic_libcontainers_stable_cri-o_1.24_1.24.1]
name=devel:kubic:libcontainers:stable:cri-o:1.24:1.24.1 (CentOS_7)
type=rpm-md
baseurl=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24:/1.24.1/CentOS_7/
gpgcheck=1
gpgkey=https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24:/1.24.1/CentOS_7/repodata/repomd.xml.key
enabled=1

sshpass -p container ssh -p 22 root@node2 “yum install -y cri-o cri-tools”
sshpass -p container ssh -p 22 root@node2 “systemctl start crio”
sshpass -p container ssh -p 22 root@node2 “systemctl enable crio”
sshpass -p container ssh -p 22 root@node2 “systemctl status crio”

13.初始化
kubeadm init –kubernetes-version 1.28.4 –ignore-preflight-errors=all –service-cidr 10.96.0.0/12 –pod-network-cidr 172.16.0.0/16 –apiserver-advertise-address 0.0.0.0 | tee kinit.txt

kubeadm join 192.168.66.10:6443 –token xjom8x.e0ysc73jt7hf7kq9
–discovery-token-ca-cert-hash sha256:edf46f3bbb46bce22755617d0a786e81235b82825a6c04c8257b5b1a81b6952d

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

15.目前只有master
kubectl get nodes

16.加入node1及node2
SHA256=$(openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | awk ‘{ print $2}’)
echo $SHA256
TOKEN=$(kubeadm token list | tail -n +2 | awk ‘{ print $1 }’)
echo $TOKEN

sshpass -p container ssh -p 22 root@node1 “kubeadm join 192.168.66.10:6443 –token $TOKEN –discovery-token-ca-cert-hash sha256:$SHA256”
sshpass -p container ssh -p 22 root@node2 “kubeadm join 192.168.66.10:6443 –token $TOKEN –discovery-token-ca-cert-hash sha256:$SHA256”

kubectl get nodes

wget https://github.com/antrea-io/antrea/releases/download/v1.2.4/antrea.yml
kubectl apply -f https://github.com/antrea-io/antrea/releases/download/v1.2.4/antrea.yml

kubectl get nodes

17.檢查服務是否正常
systemctl list-units –type=service | grep kube

systemctl status kubelet

18.指令補齊功能
source <(kubectl completion bash)
sshpass -p container ssh -p 22 root@node1 “source <(kubectl completion bash)”
sshpass -p container ssh -p 22 root@node2 “source <(kubectl completion bash)”

19.下載app測試
kubectl create deployment test1 –image=k8s.gcr.io/nginx –replicas=3

kubectl get pods

kubectl get pods -o wide

firefox http://172.16.1.2

20.刪除全部資源
kubectl delete all –all